package main import ( "fmt" "os" "path/filepath" "strings" ) func splitCommandLine(commandLine string) []string { var args []string var currentArg strings.Builder inQuotes := false for _, char := range commandLine { if char == '"' { inQuotes = !inQuotes // 切换引号状态 continue } if char == ' ' && !inQuotes { // 如果不在引号内且遇到空格,表示参数结束 if currentArg.Len() > 0 { args = append(args, currentArg.String()) currentArg.Reset() } continue } // 否则继续添加到当前参数 currentArg.WriteRune(char) } // 添加最后一个参数(如果有) if currentArg.Len() > 0 { args = append(args, currentArg.String()) } return args } func GetWorkDir() string { workDir, err := os.Getwd() if err != nil { fmt.Println(err) os.Exit(1) } return workDir } func GetDataDir() string { dataDir := filepath.Join(GetWorkDir(), "data") stat, err := os.Stat(dataDir) if os.IsNotExist(err) || !stat.IsDir() { err := os.Mkdir(dataDir, os.ModePerm) if err != nil { panic(err) } } return dataDir } func GetWorkspaceDirs() []string { dataDir := GetDataDir() entries, err := os.ReadDir(dataDir) if err != nil { panic(err) } var workspaceArr []string for _, entry := range entries { if entry.IsDir() { workspaceArr = append(workspaceArr, entry.Name()) } } return workspaceArr } func GetInstanceDirs() []string { workspaceDir := filepath.Join(GetDataDir(), GetCurrWorkspace()) entries, err := os.ReadDir(workspaceDir) if err != nil { panic(err) } var instanceArr []string for _, entry := range entries { if entry.IsDir() { instanceArr = append(instanceArr, entry.Name()) } } return instanceArr }