feat(init): Get User input for config + small refacto
This commit is contained in:
31
helpers/api_types/api_type.go
Normal file
31
helpers/api_types/api_type.go
Normal file
@ -0,0 +1,31 @@
|
||||
package api_types
|
||||
|
||||
import (
|
||||
"github.com/juju/errors"
|
||||
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/api_types/gin_gonic"
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/api_types/go_swagger"
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/api_types/mojolicious"
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
)
|
||||
|
||||
func GetApiType(in models.ApiTypeName) (ApiTypeInterface, error) {
|
||||
if in == "" {
|
||||
return nil, errors.BadRequestf("missing parameter")
|
||||
}
|
||||
|
||||
if !in.IsValid() {
|
||||
return nil, errors.NotValidf("invalid parameter")
|
||||
}
|
||||
|
||||
switch in {
|
||||
case models.ApyTypeName_GIN_GONIC:
|
||||
return gin_gonic.ApiType{}, nil
|
||||
case models.ApyTypeName_GO_SWAGGER:
|
||||
return go_swagger.ApiType{}, nil
|
||||
case models.ApyTypeName_MOJOLICIOUS:
|
||||
return mojolicious.ApiType{}, nil
|
||||
}
|
||||
|
||||
return nil, errors.NotFoundf("Unknown Api Type")
|
||||
}
|
5
helpers/api_types/base/api_type.go
Normal file
5
helpers/api_types/base/api_type.go
Normal file
@ -0,0 +1,5 @@
|
||||
package base
|
||||
|
||||
// ApiType
|
||||
type ApiType struct {
|
||||
}
|
9
helpers/api_types/base/get_name.go
Normal file
9
helpers/api_types/base/get_name.go
Normal file
@ -0,0 +1,9 @@
|
||||
package base
|
||||
|
||||
import (
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
)
|
||||
|
||||
func (a ApiType) GetName() models.ApiTypeName {
|
||||
return models.ApyTypeName_NULL
|
||||
}
|
12
helpers/api_types/base/get_user_input.go
Normal file
12
helpers/api_types/base/get_user_input.go
Normal file
@ -0,0 +1,12 @@
|
||||
package base
|
||||
|
||||
import (
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
|
||||
"github.com/juju/errors"
|
||||
)
|
||||
|
||||
func (a ApiType) GetInitializeUserInput() (*models.UserInputParams, error) {
|
||||
|
||||
return nil, errors.NotImplementedf("GetInitializeUserInput not implemented for %s", a.GetName())
|
||||
}
|
8
helpers/api_types/gin_gonic/api_type.go
Normal file
8
helpers/api_types/gin_gonic/api_type.go
Normal file
@ -0,0 +1,8 @@
|
||||
package gin_gonic
|
||||
|
||||
import "git.home.m-and-m.ovh/mderasse/gouick/helpers/api_types/base"
|
||||
|
||||
// ApiType
|
||||
type ApiType struct {
|
||||
base.ApiType
|
||||
}
|
9
helpers/api_types/gin_gonic/get_name.go
Normal file
9
helpers/api_types/gin_gonic/get_name.go
Normal file
@ -0,0 +1,9 @@
|
||||
package gin_gonic
|
||||
|
||||
import (
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
)
|
||||
|
||||
func (a ApiType) GetName() models.ApiTypeName {
|
||||
return models.ApyTypeName_GIN_GONIC
|
||||
}
|
61
helpers/api_types/gin_gonic/get_user_input.go
Normal file
61
helpers/api_types/gin_gonic/get_user_input.go
Normal file
@ -0,0 +1,61 @@
|
||||
package gin_gonic
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers"
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
|
||||
"github.com/juju/errors"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// GetInitializeUserInput
|
||||
func (a ApiType) GetInitializeUserInput() (*models.UserInputParams, error) {
|
||||
|
||||
log.Debug("Starting Gin Gonic user input")
|
||||
|
||||
// Initialize a default userInput
|
||||
userInput := models.UserInputParams{
|
||||
DB: false,
|
||||
}
|
||||
|
||||
// Get current path
|
||||
log.Debug("Getting current location")
|
||||
|
||||
currentPath, err := os.Getwd()
|
||||
if err != nil {
|
||||
log.Errorf("Fail to get current path. The following error happen: %s", err.Error())
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
// Check if we are in a go project already
|
||||
log.Debug("Checking if we are in a Go Project")
|
||||
|
||||
isGoProject, err := helpers.IsGoProject(currentPath)
|
||||
if err != nil {
|
||||
log.Errorf("Fail to check if we are in a Go Project. The following error happen: %s", err.Error())
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
if isGoProject {
|
||||
log.Error("We already are in a golang project directory")
|
||||
return nil, errors.NotValidf("We already are in a golang project directory")
|
||||
}
|
||||
|
||||
// Check if we are in gopath
|
||||
log.Debug("Checking if we are in GoPath")
|
||||
|
||||
isInGoPath := helpers.IsInGoPath(currentPath)
|
||||
if !isInGoPath {
|
||||
|
||||
log.Debug("We are not in GoPath, ask extra info")
|
||||
goModulePath := helpers.StringInput()
|
||||
userInput.GoModuleName = &goModulePath
|
||||
}
|
||||
|
||||
log.Info("Do you want to enable database integration ?")
|
||||
userInput.DB = helpers.YesOrNoInput()
|
||||
|
||||
return &userInput, nil
|
||||
}
|
8
helpers/api_types/go_swagger/api_type.go
Normal file
8
helpers/api_types/go_swagger/api_type.go
Normal file
@ -0,0 +1,8 @@
|
||||
package go_swagger
|
||||
|
||||
import "git.home.m-and-m.ovh/mderasse/gouick/helpers/api_types/base"
|
||||
|
||||
// ApiType
|
||||
type ApiType struct {
|
||||
base.ApiType
|
||||
}
|
9
helpers/api_types/go_swagger/get_name.go
Normal file
9
helpers/api_types/go_swagger/get_name.go
Normal file
@ -0,0 +1,9 @@
|
||||
package go_swagger
|
||||
|
||||
import (
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
)
|
||||
|
||||
func (a ApiType) GetName() models.ApiTypeName {
|
||||
return models.ApyTypeName_GO_SWAGGER
|
||||
}
|
62
helpers/api_types/go_swagger/get_user_input.go
Normal file
62
helpers/api_types/go_swagger/get_user_input.go
Normal file
@ -0,0 +1,62 @@
|
||||
package go_swagger
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/juju/errors"
|
||||
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers"
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// GetInitializeUserInput
|
||||
func (a ApiType) GetInitializeUserInput() (*models.UserInputParams, error) {
|
||||
|
||||
log.Debug("Starting Go Swagger user input")
|
||||
|
||||
// Initialize a default userInput
|
||||
userInput := models.UserInputParams{
|
||||
DB: false,
|
||||
}
|
||||
|
||||
// Get current path
|
||||
log.Debug("Getting current location")
|
||||
|
||||
currentPath, err := os.Getwd()
|
||||
if err != nil {
|
||||
log.Errorf("Fail to get current path. The following error happen: %s", err.Error())
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
// Check if we are in a go project already
|
||||
log.Debug("Checking if we are in a Go Project")
|
||||
|
||||
isGoProject, err := helpers.IsGoProject(currentPath)
|
||||
if err != nil {
|
||||
log.Errorf("Fail to check if we are in a Go Project. The following error happen: %s", err.Error())
|
||||
return nil, errors.Trace(err)
|
||||
}
|
||||
|
||||
if isGoProject {
|
||||
log.Error("We already are in a golang project directory")
|
||||
return nil, errors.NotValidf("We already are in a golang project directory")
|
||||
}
|
||||
|
||||
// Check if we are in gopath
|
||||
log.Debug("Checking if we are in GoPath")
|
||||
|
||||
isInGoPath := helpers.IsInGoPath(currentPath)
|
||||
if !isInGoPath {
|
||||
|
||||
log.Debug("We are not in GoPath, ask extra info")
|
||||
goModulePath := helpers.StringInput()
|
||||
userInput.GoModuleName = &goModulePath
|
||||
}
|
||||
|
||||
log.Info("Do you want to enable database integration ?")
|
||||
userInput.DB = helpers.YesOrNoInput()
|
||||
|
||||
return &userInput, nil
|
||||
}
|
9
helpers/api_types/interface.go
Normal file
9
helpers/api_types/interface.go
Normal file
@ -0,0 +1,9 @@
|
||||
package api_types
|
||||
|
||||
import "git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
|
||||
// ApiTypeInterface
|
||||
type ApiTypeInterface interface {
|
||||
GetName() models.ApiTypeName
|
||||
GetInitializeUserInput() (*models.UserInputParams, error)
|
||||
}
|
8
helpers/api_types/mojolicious/api_type.go
Normal file
8
helpers/api_types/mojolicious/api_type.go
Normal file
@ -0,0 +1,8 @@
|
||||
package mojolicious
|
||||
|
||||
import "git.home.m-and-m.ovh/mderasse/gouick/helpers/api_types/base"
|
||||
|
||||
// ApiType
|
||||
type ApiType struct {
|
||||
base.ApiType
|
||||
}
|
9
helpers/api_types/mojolicious/get_name.go
Normal file
9
helpers/api_types/mojolicious/get_name.go
Normal file
@ -0,0 +1,9 @@
|
||||
package mojolicious
|
||||
|
||||
import (
|
||||
"git.home.m-and-m.ovh/mderasse/gouick/helpers/models"
|
||||
)
|
||||
|
||||
func (a ApiType) GetName() models.ApiTypeName {
|
||||
return models.ApyTypeName_MOJOLICIOUS
|
||||
}
|
Reference in New Issue
Block a user