Skip to content

Commit 8441f79

Browse files
committed
Clean up templator with a helper function, add readme (not filled in yet), run all template executions as goroutines
1 parent ba409d9 commit 8441f79

File tree

8 files changed

+61
-83
lines changed

8 files changed

+61
-83
lines changed

cmd/create.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ func Create(projectName string, outDir string, t *templator.Templator) string {
3232
if err != nil {
3333
log.Printf("Error creating commit0 config: %v", err)
3434
}
35-
t.Commit0.Execute(f, projectName)
35+
go t.Commit0.Execute(f, projectName)
3636

3737
gitIgnorePath := path.Join(rootDir, ".gitignore")
3838
f, err = os.Create(gitIgnorePath)
3939
if err != nil {
4040
log.Printf("Error creating commit0 config: %v", err)
4141
}
42-
t.GitIgnore.Execute(f, projectName)
42+
go t.GitIgnore.Execute(f, projectName)
4343

4444
return rootDir
4545
}

cmd/generate.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cmd
22

33
import (
44
"log"
5+
"os"
56

67
"github.com/commitdev/commit0/internal/config"
78
"github.com/commitdev/commit0/internal/generate/docker"
@@ -51,15 +52,22 @@ var generateCmd = &cobra.Command{
5152
case Go:
5253
proto.Generate(t, cfg)
5354
golang.Generate(t, cfg)
55+
5456
docker.GenerateGoAppDockerFile(t, cfg)
5557
docker.GenerateGoDockerCompose(t, cfg)
5658
case React:
5759
react.Generate(t, cfg)
5860
}
5961

62+
f, err := os.Create("README.md")
63+
if err != nil {
64+
log.Printf("Error creating commit0 config: %v", err)
65+
}
66+
go t.Readme.Execute(f, cfg)
67+
6068
if cfg.Network.Http.Enabled {
61-
http.GenerateHttpGW(t, cfg)
62-
docker.GenerateGoHttpGWDockerFile(t, cfg)
69+
http.GenerateHTTPGW(t, cfg)
70+
docker.GenerateGoHTTPGWDockerFile(t, cfg)
6371
}
6472
},
6573
}

internal/generate/docker/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ func GenerateGoAppDockerFile(templator *templator.Templator, config *config.Comm
1010
util.TemplateFileIfDoesNotExist("docker/app", "Dockerfile", templator.Docker.ApplicationDocker, config)
1111
}
1212

13-
func GenerateGoHttpGWDockerFile(templator *templator.Templator, config *config.Commit0Config) {
13+
func GenerateGoHTTPGWDockerFile(templator *templator.Templator, config *config.Commit0Config) {
1414
util.TemplateFileIfDoesNotExist("docker/http", "Dockerfile", templator.Docker.HttpGatewayDocker, config)
1515
}
1616

internal/generate/golang/generate.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func GenerateGoMain(templator *templator.Templator, config *config.Commit0Config
2626
log.Printf("Error: %v", err)
2727
}
2828

29-
templator.Go.GoMain.Execute(f, config)
29+
go templator.Go.GoMain.Execute(f, config)
3030
} else {
3131
log.Printf("main.go already exists. skipping.")
3232
}
@@ -39,7 +39,7 @@ func GenerateGoMod(templator *templator.Templator, config *config.Commit0Config)
3939
log.Printf("Error: %v", err)
4040
}
4141

42-
templator.Go.GoMod.Execute(f, config)
42+
go templator.Go.GoMod.Execute(f, config)
4343
}
4444

4545
func GenerateServers(templator *templator.Templator, config *config.Commit0Config) {
@@ -74,7 +74,7 @@ func GenerateServers(templator *templator.Templator, config *config.Commit0Confi
7474
"GitRepo": config.GitRepo,
7575
}
7676

77-
templator.Go.GoServer.Execute(f, data)
77+
go templator.Go.GoServer.Execute(f, data)
7878
}
7979

8080
}
@@ -99,5 +99,5 @@ func GenerateHealthServer(templator *templator.Templator, config *config.Commit0
9999
log.Printf("Error: %v", err)
100100
}
101101

102-
templator.Go.GoHealthServer.Execute(f, config)
102+
go templator.Go.GoHealthServer.Execute(f, config)
103103
}

internal/generate/http/generate.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ import (
66
"github.com/commitdev/commit0/internal/util"
77
)
88

9-
func GenerateHttpGW(templator *templator.Templator, config *config.Commit0Config) {
10-
util.TemplateFileAndOverwrite("http", "main.go", templator.Go.GoHttpGW, config)
9+
func GenerateHTTPGW(templator *templator.Templator, config *config.Commit0Config) {
10+
util.TemplateFileAndOverwrite("http", "main.go", templator.Go.GoHTTPGW, config)
1111
}

internal/generate/proto/generate.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func GenerateGoModIDL(templator *templator.Templator, config *config.Commit0Conf
3030
log.Printf("Error: %v", err)
3131
}
3232

33-
templator.Go.GoModIDL.Execute(f, config)
33+
go templator.Go.GoModIDL.Execute(f, config)
3434
}
3535

3636
func GenerateIDLMakefile(templator *templator.Templator, config *config.Commit0Config) {
@@ -46,7 +46,7 @@ func GenerateIDLMakefile(templator *templator.Templator, config *config.Commit0C
4646
if err != nil {
4747
log.Printf("Error: %v", err)
4848
}
49-
templator.MakefileTemplate.Execute(f, config)
49+
go templator.MakefileTemplate.Execute(f, config)
5050
}
5151

5252
func GenerateProtoHealth(templator *templator.Templator, config *config.Commit0Config) {
@@ -63,7 +63,7 @@ func GenerateProtoHealth(templator *templator.Templator, config *config.Commit0C
6363
log.Printf("Error: %v", err)
6464
}
6565

66-
templator.ProtoHealthTemplate.Execute(f, config)
66+
go templator.ProtoHealthTemplate.Execute(f, config)
6767
}
6868

6969
func GenerateServiceProtobufFiles(templator *templator.Templator, cfg *config.Commit0Config) {
@@ -88,9 +88,8 @@ func GenerateServiceProtobufFiles(templator *templator.Templator, cfg *config.Co
8888
s.Name,
8989
}
9090

91-
templator.ProtoServiceTemplate.Execute(f, data)
91+
go templator.ProtoServiceTemplate.Execute(f, data)
9292
}
93-
9493
}
9594

9695
func GenerateProtoServiceLibs(config *config.Commit0Config) {

internal/templator/templator.go

Lines changed: 35 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,29 @@ import (
1111
"github.com/gobuffalo/packr/v2/file"
1212
)
1313

14+
// DockerTemplator contains the templates relevent to docker
1415
type DockerTemplator struct {
1516
ApplicationDocker *template.Template
1617
HttpGatewayDocker *template.Template
1718
DockerIgnore *template.Template
1819
DockerCompose *template.Template
1920
}
2021

22+
// GoTemplator contains the templates relevant to a go project
2123
type GoTemplator struct {
2224
GoMain *template.Template
2325
GoMod *template.Template
2426
GoModIDL *template.Template
2527
GoServer *template.Template
2628
GoHealthServer *template.Template
27-
GoHttpGW *template.Template
29+
GoHTTPGW *template.Template
2830
}
2931

32+
// Templator contains all the templates
3033
type Templator struct {
3134
Commit0 *template.Template
3235
GitIgnore *template.Template
36+
Readme *template.Template
3337
MakefileTemplate *template.Template
3438
ProtoHealthTemplate *template.Template
3539
ProtoServiceTemplate *template.Template
@@ -39,89 +43,53 @@ type Templator struct {
3943
}
4044

4145
func NewTemplator(box *packr.Box) *Templator {
42-
makeFileTemplateSource, _ := box.FindString("proto/makefile.tmpl")
43-
makeFileTemplate, _ := template.New("ProtoToolTemplate").Parse(makeFileTemplateSource)
44-
45-
protoHealthTemplateSource, _ := box.FindString("proto/health_proto.tmpl")
46-
protoHealthTemplate, _ := template.New("ProtoHealthTemplate").Parse(protoHealthTemplateSource)
47-
48-
protoServiceTemplateSource, _ := box.FindString("proto/service_proto.tmpl")
49-
protoServiceTemplate, _ := template.New("ProtoServiceTemplate").Funcs(util.FuncMap).Parse(protoServiceTemplateSource)
50-
5146
return &Templator{
52-
MakefileTemplate: makeFileTemplate,
53-
ProtoHealthTemplate: protoHealthTemplate,
54-
ProtoServiceTemplate: protoServiceTemplate,
47+
MakefileTemplate: NewSingleFileTemplator(box, "proto/makefile.tmpl"),
48+
ProtoHealthTemplate: NewSingleFileTemplator(box, "proto/health_proto.tmpl"),
49+
ProtoServiceTemplate: NewSingleFileTemplator(box, "proto/service_proto.tmpl"),
5550
Go: NewGoTemplator(box),
56-
Commit0: NewCommit0Templator(box),
57-
GitIgnore: NewGitIgnoreTemplator(box),
51+
Commit0: NewSingleFileTemplator(box, "commit0/commit0.tmpl"),
52+
GitIgnore: NewSingleFileTemplator(box, "util/gitignore.tmpl"),
53+
Readme: NewSingleFileTemplator(box, "util/README.tmpl"),
5854
Docker: NewDockerFileTemplator(box),
5955
React: NewDirectoryTemplator(box, "react"),
6056
}
6157
}
6258

6359
func NewGoTemplator(box *packr.Box) *GoTemplator {
64-
goServerTemplateSource, _ := box.FindString("golang/server.tmpl")
65-
goServerTemplate, _ := template.New("GoServerTemplate").Funcs(util.FuncMap).Parse(goServerTemplateSource)
66-
67-
goHealthTemplateSource, _ := box.FindString("golang/health_server.tmpl")
68-
goHealthServerTemplate, _ := template.New("GoHealthServerTemplate").Parse(goHealthTemplateSource)
69-
70-
goModTemplateSource, _ := box.FindString("golang/go_mod.tmpl")
71-
goModTemplate, _ := template.New("GoModTemplate").Parse(goModTemplateSource)
72-
73-
goModIDLTemplateSource, _ := box.FindString("golang/go_mod_idl.tmpl")
74-
goModIDLTemplate, _ := template.New("GoModTemplate").Parse(goModIDLTemplateSource)
75-
76-
goMainTemplateSource, _ := box.FindString("golang/main.tmpl")
77-
goMainTemplate, _ := template.New("GoMainTemplate").Funcs(util.FuncMap).Parse(goMainTemplateSource)
78-
79-
goHttpTemplateSource, _ := box.FindString("golang/http_gw.tmpl")
80-
goHttpTemplate, _ := template.New("GoHttpGWTemplate").Funcs(util.FuncMap).Parse(goHttpTemplateSource)
81-
8260
return &GoTemplator{
83-
GoMain: goMainTemplate,
84-
GoMod: goModTemplate,
85-
GoModIDL: goModIDLTemplate,
86-
GoServer: goServerTemplate,
87-
GoHealthServer: goHealthServerTemplate,
88-
GoHttpGW: goHttpTemplate,
61+
GoMain: NewSingleFileTemplator(box, "golang/main.tmpl"),
62+
GoMod: NewSingleFileTemplator(box, "golang/go_mod.tmpl"),
63+
GoModIDL: NewSingleFileTemplator(box, "golang/go_mod_idl.tmpl"),
64+
GoServer: NewSingleFileTemplator(box, "golang/server.tmpl"),
65+
GoHealthServer: NewSingleFileTemplator(box, "golang/health_server.tmpl"),
66+
GoHTTPGW: NewSingleFileTemplator(box, "golang/http_gw.tmpl"),
8967
}
9068

9169
}
9270

93-
func NewCommit0Templator(box *packr.Box) *template.Template {
94-
templateSource, _ := box.FindString("commit0/commit0.tmpl")
95-
template, _ := template.New("Commit0Template").Funcs(util.FuncMap).Parse(templateSource)
96-
97-
return template
98-
}
99-
100-
func NewGitIgnoreTemplator(box *packr.Box) *template.Template {
101-
templateSource, _ := box.FindString("util/gitignore.tmpl")
102-
template, _ := template.New("GitIgnore").Parse(templateSource)
103-
return template
104-
}
105-
10671
func NewDockerFileTemplator(box *packr.Box) *DockerTemplator {
107-
appTemplateSource, _ := box.FindString("docker/dockerfile_app.tmpl")
108-
appTemplate, _ := template.New("AppDockerfile").Parse(appTemplateSource)
109-
110-
httpTemplateSource, _ := box.FindString("docker/dockerfile_http.tmpl")
111-
httpTemplate, _ := template.New("HttpDockerfile").Parse(httpTemplateSource)
112-
113-
ignoreTemplateSource, _ := box.FindString("docker/dockerignore.tmpl")
114-
ignoreTemplate, _ := template.New("Dockerignore").Parse(ignoreTemplateSource)
72+
return &DockerTemplator{
73+
ApplicationDocker: NewSingleFileTemplator(box, "docker/dockerfile_app.tmpl"),
74+
HttpGatewayDocker: NewSingleFileTemplator(box, "docker/dockerfile_http.tmpl"),
75+
DockerIgnore: NewSingleFileTemplator(box, "docker/dockerignore.tmpl"),
76+
DockerCompose: NewSingleFileTemplator(box, "docker/dockercompose.tmpl"),
77+
}
78+
}
11579

116-
composeTemplateSource, _ := box.FindString("docker/dockercompose.tmpl")
117-
composeTemplate, _ := template.New("Dockercompose").Parse(composeTemplateSource)
80+
// NewSingleFileTemplator returns a template struct for a given template file
81+
func NewSingleFileTemplator(box *packr.Box, file string) *template.Template {
82+
source, err := box.FindString(file)
83+
if err != nil {
84+
panic(err)
85+
}
11886

119-
return &DockerTemplator{
120-
ApplicationDocker: appTemplate,
121-
HttpGatewayDocker: httpTemplate,
122-
DockerIgnore: ignoreTemplate,
123-
DockerCompose: composeTemplate,
87+
t, err := template.New(file).Funcs(util.FuncMap).Parse(source)
88+
if err != nil {
89+
panic(err)
12490
}
91+
92+
return t
12593
}
12694

12795
type DirectoryTemplator struct {

templates/util/README.tmpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# {{.Name}}
2+
3+
@TODO : Fill in readme about how to use all the components the user configured

0 commit comments

Comments
 (0)