This commit is contained in:
cubixle
2021-06-18 22:24:54 +01:00
parent ea33f7060b
commit cf2cc2a706
6 changed files with 50 additions and 50 deletions

14
app.go
View File

@@ -3,8 +3,6 @@ package main
import (
"embed"
"html/template"
"os"
"path/filepath"
)
func GenerateMain(FS embed.FS, cfg Config) error {
@@ -14,18 +12,14 @@ func GenerateMain(FS embed.FS, cfg Config) error {
}
outputFile := "cmd/app/main.go"
fp := filepath.Dir(outputFile)
if err := os.MkdirAll(fp, 0777); err != nil {
return err
}
f, err := os.Create(outputFile)
f, err := createFile(outputFile)
if err != nil {
return nil
return err
}
if err := t.Execute(f, cfg); err != nil {
return err
}
return nil
return f.Close()
}

20
db.go
View File

@@ -3,8 +3,6 @@ package main
import (
"embed"
"html/template"
"os"
"path/filepath"
"strings"
)
@@ -16,11 +14,13 @@ type DataModel struct {
type DataProperty struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
AutoIncrement bool `yaml:"autoinc"`
}
func (p DataProperty) NameCorrected() string {
if strings.Contains(p.Name, "_") {
if !strings.Contains(p.Name, "_") {
return strings.Title(p.Name)
}
parts := strings.Split(p.Name, "_")
newParts := []string{}
for _, p := range parts {
@@ -28,8 +28,6 @@ func (p DataProperty) NameCorrected() string {
}
return strings.Join(newParts, "")
}
return strings.Title(p.Name)
}
func (p DataProperty) DBTypeToGoType() string {
switch p.Type {
@@ -52,15 +50,11 @@ func GenerateDataModels(FS embed.FS, cfg Config) error {
}
outputFile := "internal/storage/" + strings.ToLower(dm.Name) + ".go"
fp := filepath.Dir(outputFile)
if err := os.MkdirAll(fp, 0777); err != nil {
f, err := createFile(outputFile)
if err != nil {
return err
}
f, err := os.Create(outputFile)
if err != nil {
return nil
}
defer f.Close()
if err := t.Execute(f, dm); err != nil {
return err

View File

@@ -8,7 +8,6 @@ data_models:
properties:
- name: id
type: varchar
autoinc: true
- name: team_id
type: varchar
- name: name

19
file.go Normal file
View File

@@ -0,0 +1,19 @@
package main
import (
"os"
"path/filepath"
)
func createFile(path string) (*os.File, error) {
fp := filepath.Dir(path)
if err := os.MkdirAll(fp, 0777); err != nil {
return nil, err
}
f, err := os.Create(path)
if err != nil {
return nil, err
}
return f, nil
}

View File

@@ -4,12 +4,14 @@ import (
"embed"
"io/ioutil"
"log"
"time"
)
//go:embed templates/*
var FS embed.FS
func main() {
tNow := time.Now()
// read config file
d, err := ioutil.ReadFile("tuugen.yml")
if err != nil {
@@ -59,6 +61,6 @@ func main() {
log.Fatalf("failed to run 'goimports': %v", err)
}
log.Println("------")
log.Println("🎉 All setup has been complete enjoy working on your business logic.")
log.Printf("🎉 All setup has been complete enjoy working on your business logic. took: %s\n", time.Since(tNow))
log.Println("------")
}

View File

@@ -7,7 +7,6 @@ import (
"go/parser"
"go/token"
"html/template"
"os"
"path/filepath"
"strings"
)
@@ -50,23 +49,6 @@ func (s serviceFuncDef) ArgsToStr() string {
// generate the service/interactor template and store it to a file.
func createFileFromProto(FS embed.FS, cfg Config, templateFile, outputFile string) error {
// load service template
t, err := template.ParseFS(FS, templateFile)
if err != nil {
return err
}
// check/create file path
fp := filepath.Dir(outputFile)
if err := os.MkdirAll(fp, 0777); err != nil {
return err
}
f, err := os.Create(outputFile)
if err != nil {
return nil
}
def, err := parseProto(cfg)
if err != nil {
return err
@@ -77,6 +59,16 @@ func createFileFromProto(FS embed.FS, cfg Config, templateFile, outputFile strin
def.Imports = append(def.Imports, cfg.ImportPath+"/internal/interactors")
}
f, err := createFile(outputFile)
if err != nil {
return err
}
t, err := template.ParseFS(FS, templateFile)
if err != nil {
return err
}
if err := t.Execute(f, def); err != nil {
return err
}