Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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 @@ -10,8 +10,8 @@ import (
"bytes"
"context"
"go/ast"
"go/format"
"go/parser"
"go/printer"
"go/token"
"os"
"path/filepath"
Expand Down Expand Up @@ -80,9 +80,8 @@ func (r *ASTReplacer) ReplaceInFile(ctx context.Context, filePath string) error

// Write back to file
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 {
// Use go/format to properly format the output (equivalent to gofmt)
if err := format.Node(&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