package main import ( "fmt" "os" "strings" ) // 颜色常量 const ( ColorReset = "\033[0m" ColorRed = "\033[31m" ColorGreen = "\033[32m" ColorYellow = "\033[33m" ColorBlue = "\033[34m" ColorPurple = "\033[35m" ColorCyan = "\033[36m" ColorWhite = "\033[37m" ) // 应用信息 const ( AppName = "runlike" Version = "1.0.0" Author = "zfxt" Description = "Shows command line necessary to run copy of existing Docker container." ) // 命令行应用结构 type CLIApp struct { } // 打印命令行使用说明 func (app *CLIApp) printUsage() { fmt.Printf("Usage: %s [options] [containerName]\n", AppName) fmt.Println() fmt.Printf("%sDescription:%s\n", ColorGreen, ColorReset) fmt.Println() fmt.Printf(" %s - %s\n", AppName, Description) fmt.Println() fmt.Printf("%sOptions:%s\n", ColorGreen, ColorReset) fmt.Println() fmt.Printf(" %s-h, --help%s 显示此帮助信息\n", ColorYellow, ColorReset) fmt.Printf(" %s-v, --version%s 显示版本信息\n", ColorYellow, ColorReset) fmt.Println() } // 执行子命令 func (app *CLIApp) executeCommand(command string) { switch command { case "help", "h": app.printUsage() } } func main() { // 创建CLI应用实例 app := &CLIApp{} // 检查命令行参数 if len(os.Args) > 1 { arg := strings.ToLower(os.Args[1]) // 处理全局选项 switch arg { case "--version", "-v": fmt.Printf("%s v%s\n", AppName, Version) return case "--help", "-h": app.printUsage() return default: //该参数是容器名称,需要根据容器名称获取容器信息 containerInfo, err := getContainerCommand(arg) if err != nil { fmt.Printf("获取容器信息失败: %v\n", err) return } //TODO fmt.Println(containerInfo) } // 处理子命令 app.executeCommand(arg) return } // 无参数时打印帮助信息 app.printUsage() }