github.com/profzone/eden-framework@v1.0.10/internal/generator/files/client_enums.go (about) 1 package files 2 3 import ( 4 "bytes" 5 "fmt" 6 "github.com/profzone/eden-framework/internal/generator/api" 7 "github.com/profzone/eden-framework/internal/generator/importer" 8 str "github.com/profzone/eden-framework/pkg/strings" 9 "github.com/sirupsen/logrus" 10 "io" 11 ) 12 13 type ClientEnumsFile struct { 14 PackageName string 15 Importer *importer.PackageImporter 16 a *api.Api 17 } 18 19 func NewClientEnumsFile(outputPath, serviceName string, a *api.Api) *ClientEnumsFile { 20 pkgName := str.ToLowerSnakeCase("client-" + serviceName) 21 return &ClientEnumsFile{ 22 PackageName: pkgName, 23 Importer: importer.NewPackageImporter(""), 24 a: a, 25 } 26 } 27 28 func (f *ClientEnumsFile) WritePackage(w io.Writer) (err error) { 29 _, err = io.WriteString(w, fmt.Sprintf("package %s\n\n", f.PackageName)) 30 return 31 } 32 33 func (f *ClientEnumsFile) WriteImports(w io.Writer) (err error) { 34 _, err = io.WriteString(w, f.Importer.String()) 35 return 36 } 37 38 func (f *ClientEnumsFile) WriteAll() string { 39 buf := bytes.NewBuffer([]byte{}) 40 41 for enumTypeFullName, enum := range f.a.Enums { 42 _, decl := importer.GetPackagePathAndDecl(enumTypeFullName) 43 enum := NewEnum("", f.PackageName, decl, enum, false) 44 err := enum.WriteEnumDefinition(buf) 45 if err != nil { 46 logrus.Panic(err) 47 } 48 49 content := enum.WriteAll() 50 _, err = io.WriteString(buf, content) 51 if err != nil { 52 logrus.Panic(err) 53 } 54 55 f.Importer.Merge(enum.Importer) 56 } 57 58 return buf.String() 59 } 60 61 func (f *ClientEnumsFile) String() string { 62 buf := bytes.NewBuffer([]byte{}) 63 64 content := f.WriteAll() 65 66 err := f.WritePackage(buf) 67 if err != nil { 68 logrus.Panic(err) 69 } 70 71 err = f.WriteImports(buf) 72 if err != nil { 73 logrus.Panic(err) 74 } 75 76 _, err = io.WriteString(buf, content) 77 if err != nil { 78 logrus.Panic(err) 79 } 80 81 return buf.String() 82 }