91 lines
1.8 KiB
Go
91 lines
1.8 KiB
Go
package app
|
||
|
||
import (
|
||
"bytes"
|
||
"errors"
|
||
"fmt"
|
||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
||
"github.com/go-admin-team/go-admin-core/sdk/pkg/utils"
|
||
"github.com/spf13/cobra"
|
||
"text/template"
|
||
)
|
||
|
||
var (
|
||
appName string
|
||
StartCmd = &cobra.Command{
|
||
Use: "app",
|
||
Short: "Create a new app",
|
||
Long: "Use when you need to create a new app",
|
||
Example: "go-admin app -n admin",
|
||
Run: func(cmd *cobra.Command, args []string) {
|
||
run()
|
||
},
|
||
}
|
||
)
|
||
|
||
func init() {
|
||
StartCmd.PersistentFlags().StringVarP(&appName, "name", "n", "", "Start server with provided configuration file")
|
||
}
|
||
|
||
func run() {
|
||
|
||
fmt.Println(`start init`)
|
||
//1. 读取配置
|
||
|
||
fmt.Println(`generate migration file`)
|
||
_ = genFile()
|
||
|
||
}
|
||
|
||
func genFile() error {
|
||
if appName == "" {
|
||
return errors.New("arg `name` invalid :name is empty")
|
||
}
|
||
path := "app/"
|
||
appPath := path + appName
|
||
err := utils.IsNotExistMkDir(appPath)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
apiPath := appPath + "/apis/"
|
||
err = utils.IsNotExistMkDir(apiPath)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
modelsPath := appPath + "/models/"
|
||
err = utils.IsNotExistMkDir(modelsPath)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
routerPath := appPath + "/router/"
|
||
err = utils.IsNotExistMkDir(routerPath)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
servicePath := appPath + "/service/"
|
||
err = utils.IsNotExistMkDir(servicePath)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
dtoPath := appPath + "/service/dto/"
|
||
err = utils.IsNotExistMkDir(dtoPath)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
|
||
t1, err := template.ParseFiles("template/cmd_api.template")
|
||
if err != nil {
|
||
return err
|
||
}
|
||
m := map[string]string{}
|
||
m["appName"] = appName
|
||
var b1 bytes.Buffer
|
||
err = t1.Execute(&b1, m)
|
||
pkg.FileCreate(b1, "./cmd/api/"+appName+".go")
|
||
t2, err := template.ParseFiles("template/router.template")
|
||
var b2 bytes.Buffer
|
||
err = t2.Execute(&b2, nil)
|
||
pkg.FileCreate(b2, appPath+"/router/router.go")
|
||
return nil
|
||
}
|