feat(template): Refactor template standard variable and implement dockerfile
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
13
helpers/api_types/base/generate_dockerfile.go
Normal file
13
helpers/api_types/base/generate_dockerfile.go
Normal file
@ -0,0 +1,13 @@
|
||||
package base
|
||||
|
||||
import (
|
||||
"github.com/juju/errors"
|
||||
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers"
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/models"
|
||||
)
|
||||
|
||||
// GenerateDockerfile will generate dockerfile based on the given config.
|
||||
func (a APIType) GenerateDockerfile(path string, config *models.Config) error {
|
||||
return errors.NotImplementedf("%s not implemented for %s", helpers.GetCurrentFuncName(), a.GetName())
|
||||
}
|
47
helpers/api_types/go_swagger/common.go
Normal file
47
helpers/api_types/go_swagger/common.go
Normal file
@ -0,0 +1,47 @@
|
||||
package go_swagger
|
||||
|
||||
import (
|
||||
"github.com/juju/errors"
|
||||
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/models"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type stdTemplateStruct struct {
|
||||
categorizedProcess
|
||||
Config *models.Config
|
||||
}
|
||||
|
||||
type categorizedProcess struct {
|
||||
APIs []*models.Process
|
||||
Crons []*models.Process
|
||||
Workers []*models.Process
|
||||
}
|
||||
|
||||
// getStdTemplate will generate the "basic" struct we will provide to a template.
|
||||
func (a APIType) getStdTemplate(path string, config *models.Config) (*stdTemplateStruct, error) {
|
||||
|
||||
data := stdTemplateStruct{
|
||||
Config: config,
|
||||
}
|
||||
|
||||
processes, err := a.getProcesses(path)
|
||||
if err != nil {
|
||||
log.Error("Fail to list processes")
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
for _, process := range processes {
|
||||
switch process.Type {
|
||||
case models.ProcessType_API:
|
||||
data.APIs = append(data.APIs, process)
|
||||
case models.ProcessType_CRON:
|
||||
data.Crons = append(data.Crons, process)
|
||||
case models.ProcessType_WORKER:
|
||||
data.Workers = append(data.Workers, process)
|
||||
}
|
||||
}
|
||||
|
||||
return &data, nil
|
||||
}
|
33
helpers/api_types/go_swagger/generate_dockerfile.go
Normal file
33
helpers/api_types/go_swagger/generate_dockerfile.go
Normal file
@ -0,0 +1,33 @@
|
||||
package go_swagger
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
|
||||
"github.com/juju/errors"
|
||||
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers"
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/models"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// GenerateDockerfile will generate a Dockerfile based on the given config.
|
||||
func (a APIType) GenerateDockerfile(path string, config *models.Config) error {
|
||||
log.Debugf("Starting %s - %s", a.GetName(), helpers.GetCurrentFuncName())
|
||||
|
||||
templatePath := filepath.Join(templateDirectory, "Dockerfile.tmpl")
|
||||
savePath := filepath.Join(path, "Dockerfile")
|
||||
|
||||
data, err := a.getStdTemplate(path, config)
|
||||
if err != nil {
|
||||
log.Error("Fail to generate standard template variable")
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
err = helpers.WriteTemplate(templatePath, savePath, data)
|
||||
if err != nil {
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
@ -11,12 +11,6 @@ import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type launcherTemplate struct {
|
||||
APIs []*models.Process
|
||||
Crons []*models.Process
|
||||
Workers []*models.Process
|
||||
}
|
||||
|
||||
// GenerateLauncher will generate a launcher.sh based on the files found in cmd directory.
|
||||
func (a APIType) GenerateLauncher(path string, config *models.Config) error {
|
||||
log.Debugf("Starting %s - %s", a.GetName(), helpers.GetCurrentFuncName())
|
||||
@ -24,25 +18,12 @@ func (a APIType) GenerateLauncher(path string, config *models.Config) error {
|
||||
templatePath := filepath.Join(templateDirectory, "launcher.sh.tmpl")
|
||||
savePath := filepath.Join(path, "launcher.sh")
|
||||
|
||||
data := launcherTemplate{}
|
||||
|
||||
processes, err := a.getProcesses(path)
|
||||
data, err := a.getStdTemplate(path, config)
|
||||
if err != nil {
|
||||
log.Error("Fail to list processes")
|
||||
log.Error("Fail to generate standard template variable")
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
for _, process := range processes {
|
||||
switch process.Type {
|
||||
case models.ProcessType_API:
|
||||
data.APIs = append(data.APIs, process)
|
||||
case models.ProcessType_CRON:
|
||||
data.Crons = append(data.Crons, process)
|
||||
case models.ProcessType_WORKER:
|
||||
data.Workers = append(data.Workers, process)
|
||||
}
|
||||
}
|
||||
|
||||
err = helpers.WriteTemplate(templatePath, savePath, data)
|
||||
if err != nil {
|
||||
return errors.Trace(err)
|
||||
|
@ -11,12 +11,6 @@ import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type makefileTemplate struct {
|
||||
APIs []*models.Process
|
||||
Crons []*models.Process
|
||||
Workers []*models.Process
|
||||
}
|
||||
|
||||
// GenerateMakefile will generate makefile based on the given config.
|
||||
// Launched only at project init or on force.
|
||||
func (a APIType) GenerateMakefile(path string, config *models.Config) error {
|
||||
@ -25,25 +19,12 @@ func (a APIType) GenerateMakefile(path string, config *models.Config) error {
|
||||
templatePath := filepath.Join(templateDirectory, "Makefile.tmpl")
|
||||
savePath := filepath.Join(path, "Makefile")
|
||||
|
||||
data := makefileTemplate{}
|
||||
|
||||
processes, err := a.getProcesses(path)
|
||||
data, err := a.getStdTemplate(path, config)
|
||||
if err != nil {
|
||||
log.Error("Fail to list processes")
|
||||
log.Error("Fail to generate standard template variable")
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
for _, process := range processes {
|
||||
switch process.Type {
|
||||
case models.ProcessType_API:
|
||||
data.APIs = append(data.APIs, process)
|
||||
case models.ProcessType_CRON:
|
||||
data.Crons = append(data.Crons, process)
|
||||
case models.ProcessType_WORKER:
|
||||
data.Workers = append(data.Workers, process)
|
||||
}
|
||||
}
|
||||
|
||||
err = helpers.WriteTemplate(templatePath, savePath, data)
|
||||
if err != nil {
|
||||
return errors.Trace(err)
|
||||
|
@ -11,11 +11,6 @@ import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type readmeTemplate struct {
|
||||
ProjectDescription string
|
||||
ProjectName string
|
||||
}
|
||||
|
||||
// GenerateReadme will generate a readme based on the given config.
|
||||
// Launched only at project init.
|
||||
func (a APIType) GenerateReadme(path string, config *models.Config) error {
|
||||
@ -24,12 +19,13 @@ func (a APIType) GenerateReadme(path string, config *models.Config) error {
|
||||
templatePath := filepath.Join(templateDirectory, "Readme.md.tmpl")
|
||||
savePath := filepath.Join(path, "Readme.md")
|
||||
|
||||
data := readmeTemplate{
|
||||
ProjectDescription: config.ProjectDescription,
|
||||
ProjectName: config.ProjectName,
|
||||
data, err := a.getStdTemplate(path, config)
|
||||
if err != nil {
|
||||
log.Error("Fail to generate standard template variable")
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
err := helpers.WriteTemplate(templatePath, savePath, data)
|
||||
err = helpers.WriteTemplate(templatePath, savePath, data)
|
||||
if err != nil {
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
@ -90,7 +90,10 @@ func (a APIType) goSwaggerGenerate(path string) error {
|
||||
Server: &generate.Server{},
|
||||
}
|
||||
generateCmd.Server.Shared.Spec = flags.Filename(filepath.Join(path, mergeYamlFileName))
|
||||
generateCmd.Server.Shared.Target = flags.Filename(path)
|
||||
//generateCmd.Server.Shared.Target = flags.Filename(path)
|
||||
generateCmd.Server.ServerPackage = "restapi"
|
||||
generateCmd.Server.Models.ModelPackage = "models"
|
||||
generateCmd.Server.Operations.APIPackage = "operations"
|
||||
generateCmd.Server.Shared.StrictResponders = true
|
||||
|
||||
return generateCmd.Server.Execute(nil)
|
||||
|
@ -12,18 +12,6 @@ import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type apiYamlTemplate struct {
|
||||
ProjectDescription string
|
||||
ProjectName string
|
||||
ProjectContact apiYamlContact
|
||||
}
|
||||
|
||||
type apiYamlContact struct {
|
||||
Email string
|
||||
Name string
|
||||
URL string
|
||||
}
|
||||
|
||||
// createDefaultAPIYamls will generate the main api yaml file based on the given config.
|
||||
// Launched only at project init.
|
||||
func (a APIType) createDefaultAPIYamls(path string, config *models.Config) error {
|
||||
@ -49,14 +37,10 @@ func (a APIType) createDefaultAPIYamls(path string, config *models.Config) error
|
||||
},
|
||||
}
|
||||
|
||||
data := apiYamlTemplate{
|
||||
ProjectDescription: config.ProjectDescription,
|
||||
ProjectName: config.ProjectName,
|
||||
ProjectContact: apiYamlContact{
|
||||
Email: config.ProjectContact.Email,
|
||||
Name: config.ProjectContact.Name,
|
||||
URL: config.ProjectContact.URL,
|
||||
},
|
||||
data, err := a.getStdTemplate(path, config)
|
||||
if err != nil {
|
||||
log.Error("Fail to generate standard template variable")
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
for _, templateFile := range templateFileList {
|
||||
|
@ -6,6 +6,7 @@ import "git.home.m-and-m.ovh/mderasse/gouick/models"
|
||||
type APITypeInterface interface {
|
||||
CheckInitialize() error
|
||||
CreateProjectSkeleton(path string, config *models.Config) error
|
||||
GenerateDockerfile(path string, config *models.Config) error
|
||||
GenerateLauncher(path string, config *models.Config) error
|
||||
GenerateMakefile(path string, config *models.Config) error
|
||||
GenerateReadme(path string, config *models.Config) error
|
||||
|
Reference in New Issue
Block a user