Files
runlike-go/main.go
2025-10-19 18:09:27 +08:00

92 lines
1.8 KiB
Go

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()
}