12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package quickstart
- import (
- "fmt"
- "os"
- "path/filepath"
- "github.com/spf13/cobra"
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/tools/goctl/util/console"
- "github.com/zeromicro/go-zero/tools/goctl/util/ctx"
- "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
- )
- const baseDir = "greet"
- var (
- log = console.NewColorConsole(true)
- projectDir string
- )
- func cleanWorkSpace(projectDir string) {
- var command string
- var breakeState bool
- fmt.Printf("Detected that the %q already exists, do you clean up?"+
- " [y: YES, n: NO]: ", projectDir)
- for {
- fmt.Scanln(&command)
- switch command {
- case "y":
- log.Debug("Clean workspace...")
- _ = os.RemoveAll(projectDir)
- breakeState = true
- break
- case "n":
- log.Error("User canceled")
- os.Exit(1)
- default:
- fmt.Println("Invalid command, try again...")
- }
- if breakeState {
- break
- }
- }
- }
- func initProject() {
- wd, err := os.Getwd()
- logx.Must(err)
- projectDir = filepath.Join(wd, baseDir)
- if exists := pathx.FileExists(projectDir); exists {
- cleanWorkSpace(projectDir)
- }
- log.Must(pathx.MkdirIfNotExist(projectDir))
- if hasGoMod, _ := ctx.IsGoMod(projectDir); hasGoMod {
- return
- }
- if exitCode := execCommand(projectDir, "go mod init "+baseDir); exitCode != 0 {
- log.Fatalln("Init process exit")
- }
- }
- func run(_ *cobra.Command, _ []string) error {
- initProject()
- switch varStringServiceType {
- case serviceTypeMono:
- newMonoService(false).start()
- case serviceTypeMicro:
- newMicroService().start()
- default:
- return fmt.Errorf("invalid service type, expected %s | %s",
- serviceTypeMono, serviceTypeMicro)
- }
- return nil
- }
|