92 lines
1.8 KiB
Go
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()
|
|
}
|