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 }