agent/pluginmanager/acspluginmanager/flag/flag.go (317 lines of code) (raw):
package flag
import (
"github.com/aliyun/aliyun_assist_client/thirdparty/aliyun-cli/cli"
"github.com/aliyun/aliyun_assist_client/thirdparty/aliyun-cli/i18n"
)
const (
HelpFlagName = "help"
VerboseFlagName = "verbose"
VersionFlagName = "version"
ListFlagName = "list"
LocalFlagName = "local"
VerifyFlagName = "verify"
StatusFlagName = "status"
PluginFlagName = "plugin"
PluginIdFlagName = "pluginId"
PluginVersionFlagName = "pluginVersion"
ParamsFlagName = "params"
ParamsV2FlagName = "paramsV2"
UrlFlagName = "url"
SeparatorFlagName = "separator"
FileFlagName = "file"
ExecFlagName = "exec"
FetchTimeoutFlagName = "fetchTimeout"
ExecutionTimeoutFlagName = "timeout"
RemoveFlagName = "remove"
)
func AddFlags(fs *cli.FlagSet) {
fs.Add(NewHelpFlag())
fs.Add(NewVersionFlag())
fs.Add(NewLocalFlag())
fs.Add(NewPluginFlag())
fs.Add(NewPluginIdFlag())
fs.Add(NewPluginVersionFlag())
fs.Add(NewParamsFlag())
fs.Add(NewParamsV2Flag())
fs.Add(NewUrlFlag())
fs.Add(NewSeparatorFlag())
fs.Add(NewFileFlag())
fs.Add(NewVerboseFlag())
fs.Add(NewListFlag())
fs.Add(NewVerifyFlag())
fs.Add(NewStatusFlag())
fs.Add(NewExecFlag())
fs.Add(NewFetchTimeoutFlag())
fs.Add(NewExecutionTimeoutFlag())
fs.Add(NewRemoveFlag())
}
func VerboseFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(VerboseFlagName)
}
func ListFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(ListFlagName)
}
func LocalFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(LocalFlagName)
}
func VersionFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(VersionFlagName)
}
func VerifyFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(VerifyFlagName)
}
func StatusFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(StatusFlagName)
}
func PluginFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(PluginFlagName)
}
func PluginIdFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(PluginIdFlagName)
}
func PluginVersionFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(PluginVersionFlagName)
}
func ParamsFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(ParamsFlagName)
}
func ParamsV2Flag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(ParamsV2FlagName)
}
func UrlFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(UrlFlagName)
}
func SeparatorFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(SeparatorFlagName)
}
func FileFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(FileFlagName)
}
func ExecFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(ExecFlagName)
}
func FetchTimeoutFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(FetchTimeoutFlagName)
}
func ExecutionTimeoutFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(ExecutionTimeoutFlagName)
}
func RemoveFlag(fs *cli.FlagSet) *cli.Flag {
return fs.Get(RemoveFlagName)
}
func NewHelpFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: HelpFlagName,
Shorthand: 'h',
AssignedMode: cli.AssignedNone,
Persistent: true,
Short: i18n.T(
`--help, print this page`,
`--help, 打印此帮助页`,
),
}
}
func NewVerboseFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: VerboseFlagName,
Shorthand: 'V',
AssignedMode: cli.AssignedNone,
DefaultValue: "",
Persistent: true,
Short: i18n.T(
`--verbose, log more`,
`--verbose, 打印更多的日志`,
),
}
}
func NewVersionFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: VersionFlagName,
Shorthand: 'v',
AssignedMode: cli.AssignedNone,
DefaultValue: "",
Persistent: true,
Short: i18n.T(
`--version, print version`,
`--version, 打印版本号`,
),
}
}
func NewListFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: ListFlagName,
Shorthand: 'l',
AssignedMode: cli.AssignedNone,
DefaultValue: "",
Short: i18n.T(
`--list, show all plugins
--list --local, only show installed plugins`,
`--list, 列出所有插件
--list --local, 只列出本地已安装的插件`,
),
}
}
func NewLocalFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: LocalFlagName,
Shorthand: 'L',
AssignedMode: cli.AssignedNone,
DefaultValue: "",
Short: i18n.T(
` `,
` `,
),
}
}
func NewVerifyFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: VerifyFlagName,
Shorthand: 'f',
AssignedMode: cli.AssignedNone,
DefaultValue: "",
Short: i18n.T(
`--verify --url <> --params <>, verify plugin`,
`--verify --url <> --params <>, 验证插件`)}
}
func NewStatusFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: StatusFlagName,
Shorthand: 'S',
AssignedMode: cli.AssignedNone,
DefaultValue: "",
Short: i18n.T(
`--status, print all plugins status`,
`--status, 打印所有插件的状态`)}
}
func NewPluginFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: PluginFlagName,
Shorthand: 'P',
AssignedMode: cli.AssignedOnce,
DefaultValue: "",
Short: i18n.T(
`select plugin by name`,
`通过名称指定插件`)}
}
func NewPluginIdFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: PluginIdFlagName,
AssignedMode: cli.AssignedOnce,
DefaultValue: "",
Short: i18n.T(
"select plugin by id",
"通过插件id指定插件")}
}
func NewPluginVersionFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: PluginVersionFlagName,
Shorthand: 'n',
AssignedMode: cli.AssignedOnce,
DefaultValue: "",
Short: i18n.T(
"set plugin version",
"指定插件版本号")}
}
func NewParamsFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: ParamsFlagName,
Shorthand: 'p',
AssignedMode: cli.AssignedOnce,
Short: i18n.T(
"set params for plugin with separator, set separator by --separator",
"设置插件的运行参数,通过--separator设置参数的分隔符")}
}
func NewParamsV2Flag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: ParamsV2FlagName,
AssignedMode: cli.AssignedOnce,
Short: i18n.T(
"set params for plugin without separator",
"设置插件的运行参数,不使用分隔符分割")}
}
func NewUrlFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: UrlFlagName,
Shorthand: 'u',
AssignedMode: cli.AssignedOnce,
Short: i18n.T(
"set plugin's url",
"指定插件地址")}
}
func NewSeparatorFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: SeparatorFlagName,
Shorthand: 's',
AssignedMode: cli.AssignedOnce,
Short: i18n.T(
"set separator to split plugin's params, default is [,]",
"指定插件参数的分隔符,默认为逗号")}
}
func NewFileFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: FileFlagName,
Shorthand: 'F',
AssignedMode: cli.AssignedOnce,
Short: i18n.T(
"select plugin file",
"指定插件文件")}
}
func NewFetchTimeoutFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: FetchTimeoutFlagName,
AssignedMode: cli.AssignedOnce,
Short: i18n.T(
"Maximum time in seconds that you allow acs-plugin-manger to fetch the plugin. By default is 20 seconds. 0 means no time limit on fetching",
"允许获取插件过程消耗的最长时间,单位为秒。默认为20秒。设为0表示不限获取时间"),
}
}
func NewExecutionTimeoutFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: ExecutionTimeoutFlagName,
AssignedMode: cli.AssignedOnce,
Short: i18n.T(
"Maximum time in seconds that you allow the plugin to run. By default the value defined in plugin is used. 0 means no time limit on execution",
"允许插件运行的最长时间,单位为秒。默认使用插件包中定义的超时时间值。设为0表示不限运行时间"),
}
}
func NewExecFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: ExecFlagName,
Shorthand: 'e',
AssignedMode: cli.AssignedNone,
Short: i18n.T(
`--exec --plugin <> --params <>, execute plugin online
--exec --local --plugin <> --params <>, execute plugin from local
--exec --file <> --params <>, execute plugin from file`,
`--exec --plugin <> --params <>, 执行插件,优先从线上查找插件
--exec --local --plugin <> --params <>, 仅从本地查找执行插件
--exec --file <> --params <>, 从插件包文件执行插件`)}
}
func NewRemoveFlag() *cli.Flag {
return &cli.Flag{
Category: "caller",
Name: RemoveFlagName,
Shorthand: 'r',
AssignedMode: cli.AssignedNone,
Short: i18n.T(
`--remove --plugin <>, remove local plugin, will delete plugin's directories`,
`--remove --plugin <>, 移除本地插件,会删除掉该插件的目录文件`)}
}