diff --git a/.gitignore b/.gitignore index 4098685..5c7d04c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ main main.exe frontend task.py -example \ No newline at end of file +example +nto_cli \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..5134da3 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/nto-cli.iml b/.idea/nto-cli.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/nto-cli.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/cmd/input.go b/cmd/input.go index 1e26bea..62e6831 100644 --- a/cmd/input.go +++ b/cmd/input.go @@ -2,6 +2,7 @@ package cmd import ( "fmt" + "log" "nto_cli/utils" "os" @@ -16,16 +17,20 @@ func Input() (string, string) { } func SelectionInput() ([]string, string) { + if len(os.Args) == 1 { + log.Fatalf("Please provide path to models.go") + } + path := os.Args[1] structNames := utils.GetStructList(path) - result := []string{} + var result []string app := tview.NewApplication() form := tview.NewForm() - checkboxes := []*tview.Checkbox{} + var checkboxes []*tview.Checkbox for _, name := range structNames { cb := tview.NewCheckbox().SetLabel(name) diff --git a/entities/field.go b/entities/field.go index 2082bd3..6368da7 100644 --- a/entities/field.go +++ b/entities/field.go @@ -9,44 +9,44 @@ import ( type Field struct { Name string Type string - Medatada []Medatada + Medatada []Metadata } -var PRIMITIVE_TYPES = map[string]string{ - "date": "date", - "number": "number", - "string": "string", +var PrimitiveTypes = map[string]string{ + "date": "date", + "number": "number", + "string": "string", "multiple": "multiple", - "boolean": "boolean", - "bool": "boolean", - "int": "number", - "uint": "number", - "float32": "number", - "float64": "number", - "int32": "number", - "int64": "number", - "uint32": "number", - "uint64": "number", - "int8": "number", - "int16": "number", - "uint8": "number", - "uint16": "number", - "byte": "number", - "rune": "number", + "boolean": "boolean", + "bool": "boolean", + "int": "number", + "uint": "number", + "float32": "number", + "float64": "number", + "int32": "number", + "int64": "number", + "uint32": "number", + "uint64": "number", + "int8": "number", + "int16": "number", + "uint8": "number", + "uint16": "number", + "byte": "number", + "rune": "number", } func (f *Field) GenerateType() string { result := " type: {\n" - keys := make([]string, 0, len(PRIMITIVE_TYPES)) - for k := range PRIMITIVE_TYPES { + keys := make([]string, 0, len(PrimitiveTypes)) + for k := range PrimitiveTypes { keys = append(keys, k) } if slices.Contains(keys, strings.ToLower(f.Type)) { - result += fmt.Sprintf(` primitive: "%s",`, PRIMITIVE_TYPES[strings.ToLower(f.Type)]) + result += fmt.Sprintf(` primitive: "%s",`, PrimitiveTypes[strings.ToLower(f.Type)]) } else { - var field string = "[]" + var field = "[]" for _, meta := range f.Medatada { if meta.Name == "field" { if len(meta.Values) > 0 { diff --git a/entities/metadata.go b/entities/metadata.go index 75e6848..3e1e871 100644 --- a/entities/metadata.go +++ b/entities/metadata.go @@ -4,30 +4,30 @@ import ( "strings" ) -type Medatada struct { +type Metadata struct { Name string Values []string } -func NewMetadata(tag string) *Medatada { +func NewMetadata(tag string) *Metadata { tag = strings.TrimSpace(tag) tagName := "" var values []string if strings.Contains(tag, "=") { tagName = tag[:strings.Index(tag, "=")] - if tag[strings.Index(tag, "=") + 1] == '[' { - values = append(values, strings.Split(tag[strings.Index(tag, "=") + 2:len(tag)-1], ";")...) + if tag[strings.Index(tag, "=")+1] == '[' { + values = append(values, strings.Split(tag[strings.Index(tag, "=")+2:len(tag)-1], ";")...) for i := range values { values[i] = strings.TrimSpace(values[i]) } } else { - values = append(values, strings.TrimSpace(tag[strings.Index(tag, "=") + 1:])) + values = append(values, strings.TrimSpace(tag[strings.Index(tag, "=")+1:])) } } else { tagName = tag } - return &Medatada{ - Name: strings.TrimSpace(strings.ToLower(tagName)), + return &Metadata{ + Name: strings.TrimSpace(strings.ToLower(tagName)), Values: values, } -} \ No newline at end of file +} diff --git a/generation/gen.go b/generation/gen.go index 03e803c..7938fe6 100644 --- a/generation/gen.go +++ b/generation/gen.go @@ -2,6 +2,7 @@ package generation import ( "fmt" + "log" "nto_cli/entities" "nto_cli/utils" "os" @@ -9,10 +10,10 @@ import ( ) func Generate(structName string, fields []entities.Field) { - mkPath := fmt.Sprintf("%s/frontend/src/%s", utils.FindFrontendPath() , strings.ToLower(structName)) + mkPath := fmt.Sprintf("%s/frontend/src/%s", utils.FindFrontendPath(), strings.ToLower(structName)) if err := os.Mkdir(mkPath, 0755); err != nil { - panic(err) + log.Fatalf("Failed to mkdir for model: %s", err) } GenerateService(structName, mkPath) GenerateScheme(structName, fields, mkPath) -} \ No newline at end of file +} diff --git a/generation/scheme.go b/generation/scheme.go index 654fd2a..a5754a0 100644 --- a/generation/scheme.go +++ b/generation/scheme.go @@ -2,6 +2,7 @@ package generation import ( "fmt" + "log" "nto_cli/entities" "nto_cli/utils" "os" @@ -10,10 +11,11 @@ import ( func GenerateScheme(structName string, fields []entities.Field, mkPath string) { schemeFile, err := os.Create(mkPath + "/" + strings.ToUpper(structName[:1]) + strings.ToLower(structName[1:]) + "Scheme.vue") - if err != nil { - panic(err) - } defer schemeFile.Close() + if err != nil { + log.Fatalf("Failed to create file: %s", err) + } + _, err = schemeFile.WriteString(fmt.Sprintf( `