plugin/commander/container/rootcmd.go (90 lines of code) (raw):
package main
import (
"fmt"
"github.com/aliyun/aliyun_assist_client/agent/version"
"github.com/aliyun/aliyun_assist_client/agent/log"
"github.com/aliyun/aliyun_assist_client/thirdparty/aliyun-cli/cli"
"github.com/aliyun/aliyun_assist_client/thirdparty/aliyun-cli/i18n"
)
type Options struct {
GetHelp bool
GetVersion bool
GetGitHash bool
LogPath string
IsVerbose bool
}
const (
HelpFlagName = "help"
VersionFlagName = "version"
GithashFlagName = "githash"
LogPathFlagName = "logPath"
)
var (
persistentFlags = []cli.Flag{
{
Name: HelpFlagName,
Shorthand: 'h',
Short: i18n.T(`print help`, `打印此帮助`),
AssignedMode: cli.AssignedNone,
Persistent: true,
Category: "caller",
},
{
Name: LogPathFlagName,
Shorthand: 'L',
Short: i18n.T(`set log dir`, `设置日志目录`),
AssignedMode: cli.AssignedOnce,
Persistent: true,
Category: "caller",
},
}
rootFlags = []cli.Flag{
{
Name: VersionFlagName,
Shorthand: 'v',
Short: i18n.T(`print version`, `打印版本号`),
AssignedMode: cli.AssignedNone,
Category: "caller",
},
{
Name: GithashFlagName,
Short: i18n.T(`print git hash`, `打印Git commit哈希值`),
AssignedMode: cli.AssignedNone,
Category: "caller",
},
}
rootCmd = cli.Command{
Name: "container-commander",
Short: i18n.T(`Aliyun Assist Copyright (c) 2017-2023 Alibaba Group Holding Limited`, `Aliyun Assist Copyright (c) 2017-2023 Alibaba Group Holding Limited`),
Usage: "container-commander [subcommand] [flags]",
Sample: "",
EnableUnknownFlag: false,
Run: runRootCommand,
}
)
func init() {
for i := range persistentFlags {
rootCmd.Flags().Add(&persistentFlags[i])
}
for j := range rootFlags {
rootCmd.Flags().Add(&rootFlags[j])
}
}
func parseOptions(ctx *cli.Context) Options {
options := Options{}
options.GetHelp = ctx.Flags().Get(HelpFlagName).IsAssigned()
options.GetVersion = ctx.Flags().Get(VersionFlagName).IsAssigned()
options.GetGitHash = ctx.Flags().Get(GithashFlagName).IsAssigned()
options.LogPath, _ = ctx.Flags().Get(LogPathFlagName).GetValue()
return options
}
func runRootCommand(ctx *cli.Context, args []string) error {
options := parseOptions(ctx)
log.InitLog("container_commander.log", options.LogPath, true)
if options.GetGitHash {
fmt.Println(version.GitCommitHash)
} else if options.GetVersion {
fmt.Println(version.AssistVersion)
}
return nil
}