Skip to content

Commit c86e20a

Browse files
committed
feat: resource and template
1 parent 39d6364 commit c86e20a

File tree

28 files changed

+127
-65
lines changed

28 files changed

+127
-65
lines changed

cmd/generate/controller/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func init() {
2727
}
2828

2929
func createController(cmd *cobra.Command, args []string) {
30-
controllerName = args[0]
30+
controllerName = utils.ConvertToSnakeCase(args[0])
3131
defaultProjectDir := filepath.Join(".", "app", "modules", controllerName, "controllers")
3232

3333
// Check if a custom path is provided as the second argument

cmd/generate/controller/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func generateControllerFile(projectDir string) {
1515
config := map[string]string{
1616
"Module": utils.DetectModuleName(),
1717
"ControllerName": utils.ConvertToSnakeCase(controllerName),
18-
"CapitalizeControllerName": utils.Capitalize(controllerName),
18+
"CapitalizeControllerName": utils.ToPascalCase(controllerName),
1919
}
2020
utils.GenerateFileFromTemplate(templatePath, outputPath, config)
2121
}

cmd/generate/guard/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func generateGuardFile(projectDir string) {
1414
config := map[string]string{
1515
"Module": utils.DetectModuleName(),
1616
"GuardName": utils.ConvertToSnakeCase(guardName),
17-
"CapitalizeGuardName": utils.Capitalize(guardName),
17+
"CapitalizeGuardName": utils.ToPascalCase(guardName),
1818
}
1919
utils.GenerateFileFromTemplate(templatePath, outputPath, config)
2020
}

cmd/generate/guard/guard.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func init() {
2626
}
2727

2828
func createGuard(cmd *cobra.Command, args []string) {
29-
guardName = args[0]
29+
guardName = utils.ConvertToSnakeCase(args[0])
3030
defaultPath := filepath.Join(".", "app", "guards", guardName)
3131

3232
if len(args) > 1 {

cmd/generate/resource/generate.go

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,81 @@
1-
// ./cmd/generate/resource/generate.go
21
package resource
32

43
import (
4+
"bytes"
55
"fmt"
6+
"io/fs"
67
"os"
78
"path/filepath"
89
"strings"
10+
"text/template"
911
"time"
1012

1113
"github.com/briandowns/spinner"
14+
"github.com/golang-programming/gincli/embedded"
1215
"github.com/golang-programming/gincli/utils"
1316
)
1417

1518
func generateResourceFromTemplate() {
16-
templatePath := fmt.Sprintf("templates/others/%s/endpoints", strings.ToLower(transport))
17-
resource := resourcePath + "/" + resourceName
18-
if !createEndpoint {
19-
templatePath = fmt.Sprintf("templates/others/%s/blank", strings.ToLower(transport))
20-
}
19+
embeddedRoot := fmt.Sprintf("templates/others/%s/%s", strings.ToLower(transport),
20+
func() string {
21+
if createEndpoint {
22+
return "endpoints"
23+
}
24+
return "blank"
25+
}(),
26+
)
2127

2228
s := spinner.New(spinner.CharSets[9], 100*time.Millisecond)
2329
s.Suffix = " Creating resource..."
2430
s.Start()
2531
defer s.Stop()
2632

27-
err := filepath.Walk(templatePath, func(path string, info os.FileInfo, err error) error {
33+
if err := fs.WalkDir(embedded.TemplatesFS, embeddedRoot, func(path string, d fs.DirEntry, err error) error {
34+
if err != nil {
35+
return err
36+
}
37+
38+
relPath, err := filepath.Rel(embeddedRoot, path)
2839
if err != nil {
2940
return err
3041
}
42+
targetPath := filepath.Join(resourcePath, relPath)
3143

32-
relativePath := strings.TrimPrefix(path, templatePath)
33-
targetPath := filepath.Join(resource, relativePath)
44+
if d.IsDir() {
45+
return os.MkdirAll(targetPath, os.ModePerm)
46+
}
3447

35-
if strings.HasSuffix(info.Name(), ".tpl") {
48+
if strings.HasSuffix(d.Name(), ".tpl") {
3649
targetFile := strings.TrimSuffix(targetPath, ".tpl")
37-
fmt.Print(path, targetFile)
38-
utils.GenerateFileFromTemplate(path, targetFile, getConfig())
50+
data, err := embedded.TemplatesFS.ReadFile(path)
51+
if err != nil {
52+
return fmt.Errorf("failed to read template %s: %v", path, err)
53+
}
54+
55+
tmpl, err := template.New("").Parse(string(data))
56+
if err != nil {
57+
return fmt.Errorf("failed to parse template %s: %v", path, err)
58+
}
59+
60+
var buf bytes.Buffer
61+
if err := tmpl.Execute(&buf, getConfig()); err != nil {
62+
return fmt.Errorf("failed to execute template %s: %v", targetFile, err)
63+
}
64+
65+
if err := os.WriteFile(targetFile, buf.Bytes(), 0644); err != nil {
66+
return fmt.Errorf("failed to write file %s: %v", targetFile, err)
67+
}
3968
}
4069

4170
return nil
42-
})
43-
44-
if err != nil {
71+
}); err != nil {
4572
utils.LogError(fmt.Sprintf("Error while copying templates: %v", err))
4673
}
4774
}
4875

4976
func getConfig() map[string]string {
5077
return map[string]string{
51-
"CapitalizeResourceName": utils.Capitalize(resourceName),
78+
"CapitalizeResourceName": utils.ToPascalCase(resourceName),
5279
"ResourceName": utils.ConvertToSnakeCase(resourceName),
5380
"Module": utils.DetectModuleName(),
5481
}

cmd/generate/resource/resource.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func init() {
3333
}
3434

3535
func createResource(cmd *cobra.Command, args []string) {
36-
resourceName = args[0]
36+
resourceName = utils.ConvertToSnakeCase(args[0])
3737

3838
defaultPath := filepath.Join(".", "app", "modules", resourceName)
3939

cmd/generate/route/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func generateRouteFile(projectDir string) {
1414
config := map[string]string{
1515
"Module": utils.DetectModuleName(),
1616
"RouteName": utils.ConvertToSnakeCase(routeName),
17-
"CapitalizeRouteName": utils.Capitalize(routeName),
17+
"CapitalizeRouteName": utils.ToPascalCase(routeName),
1818
}
1919
utils.GenerateFileFromTemplate(templatePath, outputPath, config)
2020
}

cmd/generate/route/route.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func init() {
2727
}
2828

2929
func createRoute(cmd *cobra.Command, args []string) {
30-
routeName = args[0]
30+
routeName = utils.ConvertToSnakeCase(args[0])
3131
defaultProjectDir := filepath.Join(".", "app", "modules", routeName)
3232

3333
// Check if a custom path is provided as the second argument

cmd/generate/service/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func generateServiceFile(projectDir string) {
1414
config := map[string]string{
1515
"Module": utils.DetectModuleName(),
1616
"ServiceName": utils.ConvertToSnakeCase(serviceName),
17-
"CapitalizeServiceName": utils.Capitalize(serviceName),
17+
"CapitalizeServiceName": utils.ToPascalCase(serviceName),
1818
}
1919
utils.GenerateFileFromTemplate(templatePath, outputPath, config)
2020
}

cmd/generate/service/service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func init() {
2727
}
2828

2929
func createService(cmd *cobra.Command, args []string) {
30-
serviceName = args[0]
30+
serviceName = utils.ConvertToSnakeCase(args[0])
3131
defaultProjectDir := filepath.Join(".", "app", "modules", serviceName, "services")
3232

3333
// Check if a custom path is provided as the second argument

0 commit comments

Comments
 (0)