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
6 changes: 5 additions & 1 deletion cmd/gf/internal/cmd/cmd_init.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,9 @@ gf init my-mono-repo -a
gf init my-project -u
gf init my-project -g "github.com/myorg/myproject"
gf init -r github.com/gogf/template-single my-project
gf init -r github.com/gogf/template-single my-project -s
gf init -r github.com/gogf/examples/httpserver/jwt my-jwt
gf init -r github.com/gogf/gf/cmd/gf/v2@v2.9.7 mygf
gf init -r github.com/gogf/gf/cmd/gf/v2 mygf -s
gf init -i
`
cInitNameBrief = `
Expand Down Expand Up @@ -237,6 +238,9 @@ func (c cInit) initFromBuiltin(ctx context.Context, in cInitInput) (out *cInitOu
return
}

// Format the generated Go files.
utils.GoFmt(in.Name)

// Update the GoFrame version.
if in.Update {
mlog.Print("update goframe...")
Expand Down
39 changes: 36 additions & 3 deletions cmd/gf/internal/cmd/geninit/geninit.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func processGoModule(ctx context.Context, repo, name string, opts *ProcessOption
// 1. Determine version to use
var targetVersion string
if specifiedVersion != "" {
// User specified version
// User specified version, try to use it first
targetVersion = specifiedVersion
mlog.Printf("Using specified version: %s", targetVersion)
} else if opts.SelectVersion {
Expand Down Expand Up @@ -120,8 +120,41 @@ func processGoModule(ctx context.Context, repo, name string, opts *ProcessOption
repoWithVersion := modulePath + "@" + targetVersion
srcDir, err := downloadTemplate(ctx, repoWithVersion)
if err != nil {
mlog.Printf("Download failed: %v", err)
return err
// If specified version download failed, offer to select from available versions
if specifiedVersion != "" {
mlog.Printf("Failed to download specified version '%s': %v", specifiedVersion, err)
mlog.Print("Fetching available versions...")

versionInfo, verErr := GetModuleVersions(ctx, modulePath)
if verErr != nil {
mlog.Printf("Failed to get available versions: %v", verErr)
return err // Return original download error
}

if len(versionInfo.Versions) == 0 {
mlog.Print("No versions available for this module")
return err
}

// Let user select from available versions
selectedVersion, selErr := SelectVersion(ctx, versionInfo.Versions, modulePath)
if selErr != nil {
mlog.Printf("Version selection failed: %v", selErr)
return selErr
}

// Retry download with selected version
targetVersion = selectedVersion
repoWithVersion = modulePath + "@" + targetVersion
srcDir, err = downloadTemplate(ctx, repoWithVersion)
if err != nil {
mlog.Printf("Download failed: %v", err)
return err
}
} else {
mlog.Printf("Download failed: %v", err)
return err
}
}

mlog.Debugf("Template located at: %s", srcDir)
Expand Down
7 changes: 3 additions & 4 deletions cmd/gf/internal/cmd/geninit/geninit_ast.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,10 @@ func (r *ASTReplacer) ReplaceInFile(ctx context.Context, filePath string) error
return nil
}

// Write back to file
// Write back to file without formatting.
// Formatting will be handled by utils.GoFmt after all replacements are done.
var buf bytes.Buffer
// Use default printer configuration to match gofmt output
cfg := &printer.Config{}
if err := cfg.Fprint(&buf, r.fset, file); err != nil {
if err := printer.Fprint(&buf, r.fset, file); err != nil {
return err
}

Expand Down
4 changes: 4 additions & 0 deletions cmd/gf/internal/cmd/geninit/geninit_generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/gogf/gf/v2/text/gstr"

"github.com/gogf/gf/cmd/gf/v2/internal/utility/mlog"
"github.com/gogf/gf/cmd/gf/v2/internal/utility/utils"
)

// generateProject copies the template to the destination and performs cleanup
Expand Down Expand Up @@ -81,6 +82,9 @@ func generateProject(ctx context.Context, srcPath, name, oldModule, newModule st
}
}

// 6. Format the generated Go files
utils.GoFmt(dstPath)
Comment thread
hailaz marked this conversation as resolved.

mlog.Print("Project generated successfully!")
return nil
}
Expand Down
Loading