c* 增加一个命令
- 在
cli/cmd/
下增加一个<CMD>.go
- 在
<CMD>.go
中增加以下配置(代码):
package cmd import ( . "github.com/erda-project/erda/tools/cli/command" ) // 后面有Command结构体的详细参数 var <CMD> = Command{ Name: "cmdname", // 显示在命令行中的名字 ShortHelp: "较短描述,在列出命令处显示此内容", LongHelp: "较长描述,在详细描述改命令时候显示此内容", Run: Run<CMD>, } func Run<CMD>(ctx *Context, moreArgs...) error { // impl cmd here }
- make cli
- 在
bin
目录下生成了dice
binary
指定上级命令,默认是root,也就是当前命令是1级命令
内容为上文中的 <CMD>
, 而非 Command.Name
在命令行中显示的名字
较短的描述,在命令的列表中显示
较长的描述,在命令详细信息中显示
Hidden
是否在命令列表中隐藏改命令
是否在命令执行期间显示光标
默认在命令执行时隐藏光标
- example:
[]Arg { IPArg{}.Name("ip_arg"), StringArg{}.Name("str_arg"), BoolArg{}.Name("bool_arg").Option(), }
下文另外说明 Arg
- example
[]Flag{ StringFlag{"H", "host", "1.2.3.4", "doc"}, BoolFlag{"A", "another", true, "doc"}, IntFlag{"O", "ohyoyo", 1, "doc"}, }
下文另外说明 Flag
具体实现命令的地方, 函数参数类型跟上述 Args
, Flags
有关
以上面2个例子为例
函数类型为:
func Run<CMD>(ctx *Context, arg1 net.IP, arg2 string, arg3 bool, flag1 string, flag2 bool, flag3 int) error
Command 结构体中 Args 字段的内容
命令行中显示的参数名字
是否为可选参数
注意: 只有在Arg列表的最后一个可用
转换后参数类型:string
转换后参数类型:int
转换后参数类型:float64
转换后参数类型:net.IP
Command 结构体中 Flags 字段的内容
flag shorthand letter
flag full name
Run<CMD>的第一个参数统一是 ctx *Context.
当前用户信息
配置项
是否为debug模式
特定配置的 pkg/httpclient
, 在cli中使用这个,而非 pkg/httpclient
,
如果是对openapi的请求,使用Context.Get系列方法
已经将 OPENAPIHost 以及 Authorization 以及 OPENAPISESSION cookie 写入请求,
所以对于openapi的请求,全部使用这类方法
已经将 OPENAPIHost 以及 Authorization 以及 OPENAPISESSION cookie 写入请求,
所以对于openapi的请求,全部使用这类方法
已经将 OPENAPIHost 以及 Authorization 以及 OPENAPISESSION cookie 写入请求,
所以对于openapi的请求,全部使用这类方法
已经将 OPENAPIHost 以及 Authorization 以及 OPENAPISESSION cookie 写入请求,
所以对于openapi的请求,全部使用这类方法
已经将 OPENAPIHost 以及 Authorization 以及 OPENAPISESSION cookie 写入请求,
所以对于openapi的请求,全部使用这类方法
当前 Org
当前用户可见的projects
当前用户可见的app
当前环境的 dice.yml 路径
当前环境的 dice_development.yml 路径
当前环境的 dice_test.yml 路径
当前环境的 dice_staging.yml 路径
当前环境的 dice_production.yml 路径