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
 | 
						||
}
 |