Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions internal/cli/acul_app_scaffolding.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ type Metadata struct {
Description string `json:"description"`
}

const stableACULVersion = "v2.0.1"

// loadManifest downloads and parses the manifest.json for the latest release.
func loadManifest(tag string) (*Manifest, error) {
client := &http.Client{Timeout: 15 * time.Second}
Expand Down Expand Up @@ -175,7 +177,12 @@ func runScaffold(cli *cli, cmd *cobra.Command, args []string, inputs *struct {

latestTag, err := getLatestReleaseTag()
if err != nil {
return fmt.Errorf("failed to get latest release tag: %w", err)
cli.renderer.Warnf(
"Unable to check the latest ACUL version (%v). Falling back to stable version %q.",
err,
stableACULVersion,
)
latestTag = stableACULVersion
}

manifest, err := loadManifest(latestTag)
Expand Down Expand Up @@ -204,7 +211,7 @@ func runScaffold(cli *cli, cmd *cobra.Command, args []string, inputs *struct {
return fmt.Errorf("failed to create project dir: %w", err)
}

tempUnzipDir, err := downloadAndUnzipSampleRepo()
tempUnzipDir, err := downloadAndUnzipSampleRepo(latestTag)
if err != nil {
return err
}
Expand Down Expand Up @@ -342,12 +349,7 @@ func getDestDir(args []string) string {
return args[0]
}

func downloadAndUnzipSampleRepo() (string, error) {
latestTag, err := getLatestReleaseTag()
if err != nil {
return "", fmt.Errorf("failed to get latest release tag: %w", err)
}

func downloadAndUnzipSampleRepo(latestTag string) (string, error) {
repoURL := fmt.Sprintf("https://github.com/auth0-samples/auth0-acul-samples/archive/refs/tags/%s.zip", latestTag)
tempZipFile, err := downloadFile(repoURL)
if err != nil {
Expand Down
37 changes: 14 additions & 23 deletions internal/cli/acul_screen_scaffolding.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,24 +62,20 @@ func aculScreenAddCmd(cli *cli) *cobra.Command {

// checkVersionCompatibility compares the user's ACUL config version with the latest available tag
// and warns if the project version is missing or outdated.
func checkVersionCompatibility(cli *cli, aculConfig *AculConfig, latestTag string) {
func checkVersionCompatibility(cli *cli, aculConfig *AculConfig) {
latestTag, err := getLatestReleaseTag()
cli.renderer.Warnf(
ansi.Yellow(fmt.Sprintf("Unable to check for the latest ACUL version (%v).Skipping version check and continuing with the configured version.", err)))

if aculConfig.AppVersion == "" {
cli.renderer.Warnf(
ansi.Yellow("⚠️ Missing app version in acul_config.json. Reinitialize your project with `auth0 acul init`."),
)
cli.renderer.Warnf(ansi.Yellow("⚠️ Missing app version in acul_config.json. Reinitialize your project with `auth0 acul init`."))
return
}

if aculConfig.AppVersion != latestTag {
compareLink := fmt.Sprintf(
"https://github.com/auth0-samples/auth0-acul-samples/compare/%s...%s",
aculConfig.AppVersion, latestTag,
)
compareLink := fmt.Sprintf("https://github.com/auth0-samples/auth0-acul-samples/compare/%s...%s", aculConfig.AppVersion, latestTag)

cli.renderer.Warnf(
ansi.Yellow(fmt.Sprintf("⚠️ ACUL project version outdated (%s). Check updates: %s",
aculConfig.AppVersion, compareLink)),
)
cli.renderer.Warnf(ansi.Yellow(fmt.Sprintf("⚠️ ACUL project version outdated (%s). Check updates: %s", aculConfig.AppVersion, compareLink)))
}
}

Expand All @@ -95,24 +91,19 @@ func scaffoldAddScreen(cli *cli, args []string, destDir string) error {
return err
}

latestTag, err := getLatestReleaseTag()
if err != nil {
return fmt.Errorf("failed to get latest release tag: %w", err)
}

manifest, err := loadManifest(aculConfig.AppVersion)
if err != nil {
return err
}

checkVersionCompatibility(cli, aculConfig, latestTag)
checkVersionCompatibility(cli, aculConfig)

selectedScreens, err := selectAndFilterScreens(cli, args, manifest, aculConfig.ChosenTemplate, aculConfig.Screens)
if err != nil {
return err
}

if err = addScreensToProject(cli, destDir, aculConfig.ChosenTemplate, selectedScreens, manifest.Templates[aculConfig.ChosenTemplate]); err != nil {
if err = addScreensToProject(cli, destDir, aculConfig, selectedScreens, manifest.Templates[aculConfig.ChosenTemplate]); err != nil {
return err
}

Expand Down Expand Up @@ -164,8 +155,8 @@ func selectAndFilterScreens(cli *cli, args []string, manifest *Manifest, chosenT
return finalScreens, nil
}

func addScreensToProject(cli *cli, destDir, chosenTemplate string, selectedScreens []string, selectedTemplate Template) error {
tempUnzipDir, err := downloadAndUnzipSampleRepo()
func addScreensToProject(cli *cli, destDir string, aculConfig *AculConfig, selectedScreens []string, selectedTemplate Template) error {
tempUnzipDir, err := downloadAndUnzipSampleRepo(aculConfig.AppVersion)
if err != nil {
return err
}
Expand All @@ -176,7 +167,7 @@ func addScreensToProject(cli *cli, destDir, chosenTemplate string, selectedScree
return fmt.Errorf("failed to find extracted directory: %w", err)
}

sourcePathPrefix := filepath.Join(extractedDir, chosenTemplate)
sourcePathPrefix := filepath.Join(extractedDir, aculConfig.ChosenTemplate)
var sourceRoot = filepath.Join(tempUnzipDir, sourcePathPrefix)
var destRoot = destDir

Expand Down Expand Up @@ -206,7 +197,7 @@ func addScreensToProject(cli *cli, destDir, chosenTemplate string, selectedScree
return fmt.Errorf("error copying missing files: %w", err)
}

return copyProjectScreens(cli, selectedTemplate.Screens, selectedScreens, chosenTemplate, tempUnzipDir, destDir)
return copyProjectScreens(cli, selectedTemplate.Screens, selectedScreens, aculConfig.ChosenTemplate, tempUnzipDir, destDir)
}

func handleEditedFiles(cli *cli, edited []string, sourceRoot, destRoot string) error {
Expand Down
Loading