feat(go-swagger): Allow generate launcher makefile and readme. Refactoring
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_launcher.go
Normal file
13
helpers/api_types/base/generate_launcher.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"
|
||||
)
|
||||
|
||||
// GenerateLauncher will generate a launcher entrypoint based on the given config.
|
||||
func (a APIType) GenerateLauncher(path string, config *models.Config) error {
|
||||
return errors.NotImplementedf("%s not implemented for %s", helpers.GetCurrentFuncName(), a.GetName())
|
||||
}
|
14
helpers/api_types/base/generate_makefile.go
Normal file
14
helpers/api_types/base/generate_makefile.go
Normal file
@ -0,0 +1,14 @@
|
||||
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"
|
||||
)
|
||||
|
||||
// GenerateMakefile will generate makefile based on the given config.
|
||||
// Launched only at project init or with generate makefile command.
|
||||
func (a APIType) GenerateMakefile(path string, config *models.Config) error {
|
||||
return errors.NotImplementedf("%s not implemented for %s", helpers.GetCurrentFuncName(), a.GetName())
|
||||
}
|
14
helpers/api_types/base/generate_readme.go
Normal file
14
helpers/api_types/base/generate_readme.go
Normal file
@ -0,0 +1,14 @@
|
||||
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"
|
||||
)
|
||||
|
||||
// GenerateReadme will generate a readme based on the given config.
|
||||
// Launched only at project init and with generate readme command.
|
||||
func (a APIType) GenerateReadme(path string, config *models.Config) error {
|
||||
return errors.NotImplementedf("%s not implemented for %s", helpers.GetCurrentFuncName(), a.GetName())
|
||||
}
|
@ -19,21 +19,8 @@ func (a APIType) CreateProjectSkeleton(path string, config *models.Config) error
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
// Generate Makefile
|
||||
err = a.GenerateMakefile(path, config)
|
||||
if err != nil {
|
||||
log.Error("Fail to generate Makefile")
|
||||
return errors.Trace(err)
|
||||
}
|
||||
// Generate Readme
|
||||
err = a.generateReadme(path, config)
|
||||
if err != nil {
|
||||
log.Error("Fail to generate Readme.md")
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
// Generate api yaml files
|
||||
err = a.generateAPIYamls(path, config)
|
||||
err = a.createDefaultAPIYamls(path, config)
|
||||
if err != nil {
|
||||
log.Error("Fail to generate API Yaml files")
|
||||
return errors.Trace(err)
|
||||
|
69
helpers/api_types/go_swagger/generate_launcher.go
Normal file
69
helpers/api_types/go_swagger/generate_launcher.go
Normal file
@ -0,0 +1,69 @@
|
||||
package go_swagger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"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"
|
||||
)
|
||||
|
||||
type launcherProcess struct {
|
||||
Binary string
|
||||
Name string
|
||||
}
|
||||
|
||||
type launcherTemplate struct {
|
||||
APIs []*launcherProcess
|
||||
Workers []*launcherProcess
|
||||
}
|
||||
|
||||
// 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())
|
||||
|
||||
cmdPath := filepath.Join(path, "cmd")
|
||||
templatePath := filepath.Join(templateDirectory, "launcher.sh.tmpl")
|
||||
savePath := filepath.Join(path, "launcher.sh")
|
||||
|
||||
data := launcherTemplate{
|
||||
APIs: []*launcherProcess{},
|
||||
Workers: []*launcherProcess{},
|
||||
}
|
||||
|
||||
cmdDirectories, err := filepath.Glob(filepath.Join(cmdPath, "*"))
|
||||
if err != nil {
|
||||
log.Error("Fail to list cmd directory")
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
for _, absDir := range cmdDirectories {
|
||||
dir := strings.TrimPrefix(absDir, fmt.Sprintf("%s%c", cmdPath, filepath.Separator))
|
||||
|
||||
// if we have a suffix -server or -api we are on an API.
|
||||
// if we have a prefix worker- we are on a worker.
|
||||
if strings.HasSuffix(dir, "-server") || strings.HasSuffix(dir, "-api") {
|
||||
data.APIs = append(data.APIs, &launcherProcess{
|
||||
Binary: dir,
|
||||
Name: dir,
|
||||
})
|
||||
} else if strings.HasPrefix(dir, "worker-") {
|
||||
data.APIs = append(data.Workers, &launcherProcess{
|
||||
Binary: dir,
|
||||
Name: strings.TrimPrefix(dir, "worker-"),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
err = helpers.WriteTemplate(templatePath, savePath, data)
|
||||
if err != nil {
|
||||
return errors.Trace(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
@ -16,9 +16,9 @@ type readmeTemplate struct {
|
||||
ProjectName string
|
||||
}
|
||||
|
||||
// generateReadme will generate a readme based on the given config.
|
||||
// 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 {
|
||||
func (a APIType) GenerateReadme(path string, config *models.Config) error {
|
||||
log.Debugf("Starting %s - %s", a.GetName(), helpers.GetCurrentFuncName())
|
||||
|
||||
templatePath := filepath.Join(templateDirectory, "Readme.md.tmpl")
|
||||
|
@ -24,9 +24,9 @@ type apiYamlContact struct {
|
||||
URL string
|
||||
}
|
||||
|
||||
// generateAPIYamls will generate the main api yaml file based on the given config.
|
||||
// createDefaultAPIYamls will generate the main api yaml file based on the given config.
|
||||
// Launched only at project init.
|
||||
func (a APIType) generateAPIYamls(path string, config *models.Config) error {
|
||||
func (a APIType) createDefaultAPIYamls(path string, config *models.Config) error {
|
||||
log.Debugf("Starting %s - %s", a.GetName(), helpers.GetCurrentFuncName())
|
||||
|
||||
type templateFileStruct struct {
|
||||
|
@ -6,6 +6,9 @@ import "git.home.m-and-m.ovh/mderasse/gouick/models"
|
||||
type APITypeInterface interface {
|
||||
CheckInitialize() error
|
||||
CreateProjectSkeleton(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
|
||||
GetInitializeUserInput(params *models.Config) (*models.Config, error)
|
||||
GetName() models.APITypeName
|
||||
}
|
||||
|
Reference in New Issue
Block a user