https://github.com/spf13/cobra

https://github.com/spf13/cobra/blob/master/bash_completions.md

go get github.com/spf13/cobra/cobra

cobra init cobratest

main.go 目录下

cobra add serve
cobra add config
cobra add create -p 'configCmd'

Persistent Flags

一个标志可以是“持久的”,这意味着这个标志将被分配的命令以及该命令下的每个命令都可用。 对于全局标志,在根上分配一个标志作为持久标志。

Local Flags

一个标志也可以在本地分配,只适用于该特定的命令。

Local Flag on Parent Commands

默认情况下,Cobra只解析目标命令的本地标志,父命令的任何本地标志都被忽略。 通过启用Command.TraverseChildren Cobra将在执行目标命令之前分析每个命令上的本地标志。

command := cobra.Command{
  Use: "print [OPTIONS] [COMMANDS]",
  TraverseChildren: true,
}

https://github.com/spf13/viper#working-with-flags