browser-multi/util.go
2025-06-11 14:42:45 +08:00

92 lines
1.7 KiB
Go

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
}