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  }