@@ -5,10 +5,7 @@ import (
55 "sync"
66
77 "github.com/commitdev/commit0/internal/config"
8- "github.com/commitdev/commit0/internal/generate/ci"
9- "github.com/commitdev/commit0/internal/generate/docker"
108 "github.com/commitdev/commit0/internal/generate/golang"
11- "github.com/commitdev/commit0/internal/generate/http"
129 "github.com/commitdev/commit0/internal/generate/kubernetes"
1310 "github.com/commitdev/commit0/internal/generate/proto"
1411 "github.com/commitdev/commit0/internal/generate/react"
@@ -19,7 +16,6 @@ import (
1916)
2017
2118var configPath string
22- var language string
2319
2420const (
2521 Go = "go"
@@ -32,7 +28,6 @@ var supportedLanguages = [...]string{Go, React, Kubernetes}
3228func init () {
3329
3430 generateCmd .PersistentFlags ().StringVarP (& configPath , "config" , "c" , "commit0.yml" , "config path" )
35- generateCmd .PersistentFlags ().StringVarP (& language , "language" , "l" , "" , "language to generate project in" )
3631
3732 rootCmd .AddCommand (generateCmd )
3833}
@@ -41,54 +36,58 @@ var generateCmd = &cobra.Command{
4136 Use : "generate" ,
4237 Short : "Generate idl & application folders" ,
4338 Run : func (cmd * cobra.Command , args []string ) {
44- if ! ValidLanguage () {
45- log .Fatalf ("'%s' is not a supported language." , language )
46- }
4739
4840 templates := packr .New ("templates" , "../templates" )
4941 t := templator .NewTemplator (templates )
5042
5143 cfg := config .LoadConfig (configPath )
52- cfg .Language = language
5344 cfg .Print ()
5445
5546 var wg sync.WaitGroup
56- switch language {
57- case Go :
58- proto .Generate (t , cfg , & wg )
59- golang .Generate (t , cfg , & wg )
47+ if ! ValidLanguage (cfg .Frontend .Framework ) {
48+ log .Fatalf ("'%s' is not a supported framework." , cfg .Frontend .Framework )
49+ }
6050
61- docker .GenerateGoAppDockerFile (t , cfg , & wg )
62- docker .GenerateGoDockerCompose (t , cfg , & wg )
63- case React :
64- react .Generate (t , cfg , & wg )
65- case Kubernetes :
66- kubernetes .Generate (t , cfg , & wg )
51+ for _ , s := range cfg .Services {
52+ if ! ValidLanguage (cfg .Frontend .Framework ) {
53+ log .Fatalf ("'%s' in service '%s' is not a supported language." , s .Name , s .Language )
54+ }
6755 }
6856
69- util .TemplateFileIfDoesNotExist ("" , "README.md" , t .Readme , & wg , cfg )
57+ for _ , s := range cfg .Services {
58+ switch s .Language {
59+ case Go :
60+ log .Printf ("Creating Go service" )
61+ proto .Generate (t , cfg , s , & wg )
62+ golang .Generate (t , cfg , s , & wg )
63+ }
64+ }
7065
71- if cfg .CI . System != "" {
72- ci .Generate (t . CI , cfg , "." , & wg )
66+ if cfg .Infrastructure . AWS . EKS . ClusterName != "" {
67+ kubernetes .Generate (t , cfg , & wg )
7368 }
7469
75- if cfg .Network .Http .Enabled {
76- http .GenerateHTTPGW (t , cfg , & wg )
77- docker .GenerateGoHTTPGWDockerFile (t , cfg , & wg )
70+ // @TODO : This strucuture probably needs to be adjusted. Probably too generic.
71+ switch cfg .Frontend .Framework {
72+ case React :
73+ react .Generate (t , cfg , & wg )
7874 }
7975
76+ util .TemplateFileIfDoesNotExist ("" , "README.md" , t .Readme , & wg , cfg )
77+
8078 // Wait for all the templates to be generated
8179 wg .Wait ()
8280
83- switch language {
84- case Kubernetes :
81+ log .Println ("Executing commands" )
82+ // @TODO : Move this stuff to another command? Or genericize it a bit.
83+ if cfg .Infrastructure .AWS .EKS .Deploy {
8584 kubernetes .Execute (cfg )
8685 }
8786
8887 },
8988}
9089
91- func ValidLanguage () bool {
90+ func ValidLanguage (language string ) bool {
9291 for _ , l := range supportedLanguages {
9392 if l == language {
9493 return true
0 commit comments