first commit
This commit is contained in:
91
main.go
Normal file
91
main.go
Normal file
@@ -0,0 +1,91 @@
|
||||
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()
|
||||
}
|
||||
Reference in New Issue
Block a user