From dc71c0d28f8234a23072cd49c4bd8cba813af533 Mon Sep 17 00:00:00 2001 From: oldme <45782393+oldme-git@users.noreply.github.com> Date: Mon, 6 Nov 2023 19:27:26 +0800 Subject: [PATCH] enhance #3129 (#3134) --- .../internal/cmd/genenums/genenums_parser.go | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/cmd/gf/internal/cmd/genenums/genenums_parser.go b/cmd/gf/internal/cmd/genenums/genenums_parser.go index 5e38492c3..2cacf95d6 100644 --- a/cmd/gf/internal/cmd/genenums/genenums_parser.go +++ b/cmd/gf/internal/cmd/genenums/genenums_parser.go @@ -19,9 +19,10 @@ import ( const pkgLoadMode = 0xffffff type EnumsParser struct { - enums []EnumItem - parsedPkg map[string]struct{} - prefixes []string + enums []EnumItem + parsedPkg map[string]struct{} + prefixes []string + standardPackages map[string]struct{} } type EnumItem struct { @@ -31,23 +32,12 @@ type EnumItem struct { Type string // Pkg.ID + TypeName } -var standardPackages = make(map[string]struct{}) - -func init() { - stdPackages, err := packages.Load(nil, "std") - if err != nil { - panic(err) - } - for _, p := range stdPackages { - standardPackages[p.ID] = struct{}{} - } -} - func NewEnumsParser(prefixes []string) *EnumsParser { return &EnumsParser{ - enums: make([]EnumItem, 0), - parsedPkg: make(map[string]struct{}), - prefixes: prefixes, + enums: make([]EnumItem, 0), + parsedPkg: make(map[string]struct{}), + prefixes: prefixes, + standardPackages: getStandardPackages(), } } @@ -59,7 +49,7 @@ func (p *EnumsParser) ParsePackages(pkgs []*packages.Package) { func (p *EnumsParser) ParsePackage(pkg *packages.Package) { // Ignore std packages. - if _, ok := standardPackages[pkg.ID]; ok { + if _, ok := p.standardPackages[pkg.ID]; ok { return } // Ignore pared packages. @@ -144,3 +134,15 @@ func (p *EnumsParser) Export() string { } return gjson.MustEncodeString(typeEnumMap) } + +func getStandardPackages() map[string]struct{} { + standardPackages := make(map[string]struct{}) + stdPackages, err := packages.Load(nil, "std") + if err != nil { + panic(err) + } + for _, p := range stdPackages { + standardPackages[p.ID] = struct{}{} + } + return standardPackages +}