Skip to content

Commit

Permalink
update interface
Browse files Browse the repository at this point in the history
  • Loading branch information
snowmerak committed Jun 17, 2023
1 parent d9cc8e5 commit c86ccdb
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 8 deletions.
2 changes: 1 addition & 1 deletion internal/executor/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func Generate(root string) error {

if len(beans) > 0 {
beanUpdated = true
if err := generate.Bean(moduleName, path, beans); err != nil {
if err := generate.Bean(path, beans); err != nil {
return err
}
log.Printf("generate bean: %s", relativePath)
Expand Down
78 changes: 71 additions & 7 deletions internal/executor/generate/bean.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,77 @@ func BeanContainer(root string) error {
return nil
}

func Bean(moduleName string, path string, beans []check.Bean) error {
func Bean(path string, beans []check.Bean) error {
dir := filepath.Dir(path)
packageName := filepath.Base(dir)
beanPath := filepath.Join(moduleName, "gen", "bean")

if len(beans) == 0 {
return nil
}

{
ifce := []model.Interface{
{
Name: "Container",
Methods: []model.Method{
{
Name: "Get",
Params: []model.Field{
{
Name: "key",
Type: "any",
},
},
Return: []model.Field{
{
Name: "value",
Type: "any",
},
{
Name: "ok",
Type: "bool",
},
},
},
{
Name: "Set",
Params: []model.Field{
{
Name: "key",
Type: "any",
},
{
Name: "value",
Type: "any",
},
},
},
{
Name: "Delete",
Params: []model.Field{
{
Name: "key",
Type: "any",
},
},
},
},
},
}

ifceFilePath := filepath.Join(dir, "bean.interface.go")
ifcePkg := &model.Package{
Name: packageName,
Interfaces: ifce,
}
ifceData, err := generator.GenerateFile(ifcePkg)
if err != nil {
return err
}
if err := os.WriteFile(ifceFilePath, ifceData, os.ModePerm); err != nil {
return err
}
}

for _, bean := range beans {
for _, alias := range bean.Aliases {
Expand All @@ -136,9 +203,6 @@ func Bean(moduleName string, path string, beans []check.Bean) error {
pkg := &model.Package{
Name: packageName,
Imports: []model.Import{
{
Path: beanPath,
},
{
Path: "errors",
},
Expand All @@ -162,7 +226,7 @@ func Bean(moduleName string, path string, beans []check.Bean) error {
Params: []model.Field{
{
Name: "beanContainer",
Type: "*bean.Container",
Type: "Container",
},
{
Name: "value",
Expand All @@ -178,7 +242,7 @@ func Bean(moduleName string, path string, beans []check.Bean) error {
Params: []model.Field{
{
Name: "beanContainer",
Type: "*bean.Container",
Type: "Container",
},
},
Return: []model.Field{
Expand Down
30 changes: 30 additions & 0 deletions internal/executor/new.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"os"
"os/exec"
"path/filepath"
"strings"
)

const commandScaffold = `package main
Expand All @@ -17,6 +18,12 @@ func main() {
}
`

const generateScaffold = `package main
//go:generate jetti generate
`

const protoScaffold = `syntax = "proto3";
package %s;
Expand Down Expand Up @@ -66,6 +73,29 @@ func New(root string, moduleName string, kind int) error {
if err := generate.MakeReadme(root, moduleName); err != nil {
return err
}

f, err := os.Create(filepath.Join(root, "generate.go"))
if err != nil {
return err
}
defer func(f *os.File) {
f.Close()
}(f)
if _, err := f.WriteString(generateScaffold); err != nil {
return err
}

gitIgnores := []string{".jetti-cache"}
f, err = os.Create(filepath.Join(root, ".gitignore"))
if err != nil {
return err
}
defer func(f *os.File) {
f.Close()
}(f)
if _, err := f.WriteString(strings.Join(gitIgnores, "\n")); err != nil {
return err
}
case NewKindProto:
path := filepath.Join(filepath.ToSlash(root), filepath.ToSlash(moduleName))
dir := filepath.Dir(path)
Expand Down

0 comments on commit c86ccdb

Please sign in to comment.