Skip to content

Commit

Permalink
cli & features fully implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
rogerwelin committed Feb 10, 2020
1 parent 6831cb2 commit c5e7fea
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 53 deletions.
5 changes: 4 additions & 1 deletion cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@ func validateRun(c *cli.Context) error {
Language: c.String("language"),
}

fmt.Println(apiTmpl)
err := apiTmpl.bootstrapAPI()
if err != nil {
return err
}

return nil
}
Expand Down
130 changes: 78 additions & 52 deletions new-api.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
)

var (
defaultAppPath = "src/helloworld/app"
defaultAppPath = "/src/helloworld/app"
allowedAPIProtocols = []string{"rest", "websocket"}
allowedRestAPIEndpoints = []string{"regional", "edge", "private"}
)
Expand All @@ -28,47 +28,53 @@ type LanguageMapper struct {
DepsPath string
}

var languages = map[string]LanguageMapper{
"node": LanguageMapper{
AppFile: "index.js",
DepsFile: "package.json",
TmplAppVar: nodeFunction,
TmplDepsVar: packageJson,
AppPath: defaultAppPath,
DepsPath: defaultAppPath,
},
"java": LanguageMapper{
AppFile: "App.java",
DepsFile: "pom.xml",
TmplAppVar: "",
TmplDepsVar: "",
AppPath: defaultAppPath + "/com/api",
DepsPath: defaultAppPath,
},
"python": LanguageMapper{
AppFile: "app.py",
DepsFile: "requirements.txt",
TmplAppVar: "",
TmplDepsVar: "",
AppPath: defaultAppPath,
DepsPath: defaultAppPath,
},
"ruby": LanguageMapper{
AppFile: "app.rb",
DepsFile: "Gemfile",
TmplAppVar: "",
TmplDepsVar: "",
AppPath: defaultAppPath,
DepsPath: defaultAppPath,
},
"go": LanguageMapper{
AppFile: "main.go",
DepsFile: "go.mod",
TmplAppVar: "",
TmplDepsVar: "",
AppPath: defaultAppPath,
DepsPath: defaultAppPath,
},
func initMap(projectName string) map[string]LanguageMapper {

appPath := projectName + defaultAppPath

var languages = map[string]LanguageMapper{
"node": LanguageMapper{
AppFile: "index.js",
DepsFile: "package.json",
TmplAppVar: nodeFunction,
TmplDepsVar: packageJson,
AppPath: appPath,
DepsPath: appPath,
},
"java": LanguageMapper{
AppFile: "App.java",
DepsFile: "pom.xml",
TmplAppVar: "",
TmplDepsVar: "",
AppPath: appPath + "/com/api",
DepsPath: appPath,
},
"python": LanguageMapper{
AppFile: "app.py",
DepsFile: "requirements.txt",
TmplAppVar: "",
TmplDepsVar: "",
AppPath: appPath,
DepsPath: appPath,
},
"ruby": LanguageMapper{
AppFile: "app.rb",
DepsFile: "Gemfile",
TmplAppVar: "",
TmplDepsVar: "",
AppPath: appPath,
DepsPath: appPath,
},
"go": LanguageMapper{
AppFile: "main.go",
DepsFile: "go.mod",
TmplAppVar: "",
TmplDepsVar: "",
AppPath: appPath,
DepsPath: appPath,
},
}
return languages
}

func createDir(path string) error {
Expand Down Expand Up @@ -112,24 +118,44 @@ func (tmpl *TmplData) createFileFromTemplate(tmplVar string, path string, outNam
var file *os.File
var err error

if path != "" {
file, err = os.Create(path + "/" + outName)
if err != nil {
return err
}
} else {
file, err = os.Create(outName)
if err != nil {
return err
}
file, err = os.Create(path + "/" + outName)
if err != nil {
return err
}

err = t.Execute(file, tmpl)
if err != nil {
return err
}
return nil
}

func (tmpl *TmplData) bootstrapAPI() error {

// create top dir
createDir(tmpl.ApiProjectName)

// create apigw sam/cf
err := tmpl.createFileFromTemplate(apiGWConf, tmpl.ApiProjectName, "apigw.yml")
if err != nil {
panic(err)
}

// create swagger file
err = tmpl.createFileFromTemplate(swagger, tmpl.ApiProjectName, "swagger-api.yml")
if err != nil {
return err
}

languageMap := initMap(tmpl.ApiProjectName)

err = createFileFromStruct(languageMap[tmpl.Language])
if err != nil {
return err
}
return nil
}

/*func main() {
apiTmpl := &TmplData{
Expand Down

0 comments on commit c5e7fea

Please sign in to comment.