安装cobra-cli
go get github.com/spf13/cobra-cli
go install github.com/spf13/cobra-cli
go mod tidy ; go mod vendor
go install 默认路径
go env | grep PATH
GOPATH='/root/go'
find / -type f -name "cobra-cli"
/root/go/bin/cobra-cli
添加执行目录环境变量
vim /root/.bashrc
export PATH=/root/go/bin:/usr/local/bin:$PATH
cobra-cli
Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.
Usage:
cobra-cli [command]
Available Commands:
add Add a command to a Cobra Application
completion Generate the autocompletion script for the specified shell
help Help about any command
init Initialize a Cobra Application
Flags:
-a, --author string author name for copyright attribution (default "YOUR NAME")
--config string config file (default is $HOME/.cobra.yaml)
-h, --help help for cobra-cli
-l, --license string name of license for the project
--viper use Viper for configuration
Use "cobra-cli [command] --help" for more information about a command.
cobra 初始化
`在未来管理cobra的目录执行,一般为cmd/cobra`
cobra-cli init .
Your Cobra application is ready at
/data/app/saplat/cmd/cobra
root@hkdev3:/x/cmd/cobra# ll
total 16
drwxr-xr-x 3 root root 4096 Dec 25 23:09 ./
drwxr-xr-x 5 root root 4096 Dec 25 23:07 ../
drwxr-x--x 2 root root 4096 Dec 25 23:09 cmd/
-rw-r--r-- 1 root root 0 Dec 25 23:09 LICENSE
-rw-r--r-- 1 root root 156 Dec 25 23:09 main.go
cobra添加子命令
`在cobra目录执行`
cobra-cli add ecs
go run main.go
Usage:
cobra [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
ecs ECS操作

添加二级子命令
ecs.go
var (
instanceID string
instanceType string
regionId string
)
var ecsCmd = &cobra.Command{
Use: "ecs",
Short: "ECS操作",
Long: `ECS操作`,
Run: func(cmd *cobra.Command, args []string) {
},
}
var ecsModifyInstanceSpecCmd = &cobra.Command{
Use: "modifyInstanceSpec",
Short: "修改预付费机型规格;ecs modifyInstanceSpec -i -t -r=cn-hongkong",
Long: `修改预付费机型规格;ecs modifyInstanceSpec --instanceID= --InstanceType= --RegionId=cn-hongkong`,
Run: func(cmd *cobra.Command, args []string) {
if instanceID != "" && instanceType != "" && regionId != "" {
fmt.Println("修改预付费机型规格:", instanceID, instanceType, regionId)
inspection.ModifyPrepayInstanceSpec(instanceID, instanceType, regionId)
}
ecsCmd.AddCommand(ecsModifyInstanceSpecCmd)

对二级子命令添加参数
ecs.go
ecsModifyInstanceSpecCmd.PersistentFlags().StringVarP(&instanceID, "instanceID","i", "","实例ID")
ecsModifyInstanceSpecCmd.PersistentFlags().StringVarP(&instanceType, "instanceType","t", "","机型规格")
ecsModifyInstanceSpecCmd.PersistentFlags().StringVarP(®ionId,"regionId","r", "cn-hongkong", "Region")
ecsModifyInstanceSpecCmd.MarkFlagsRequiredTogether("instanceID","instanceType")

go run main.go ecs modifyInstanceSpec -i="i-j6cdc1nz443azh1nfszf" -t="ecs.g6.8xlarge" -r="cn-hongkong"
修改预付费机型规格: i-j6cdc1nz443azh1nfszf ecs.g6.8xlarge cn-hongkong

链接
www.jianshu.com/p/1a10f727c…