Persistent Flags
表示该类参数可以被用于当前命令及其子命令。
例如,以下表示verbose
参数可以被用于rootCmd
及其子命令。
rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output")
Local Flags
表示该类参数只能用于当前命令。
例如,以下表示source
只能用于localCmd
这个命令,不能用于其子命令。
localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from")
cobra默认只解析当前命令的local flags,通过开启Command.TraverseChildren
参数,可以解析每个命令的local flags。
command := cobra.Command{
Use: "print [OPTIONS] [COMMANDS]",
TraverseChildren: true,
}
可以通过 viper来绑定flags。
var author string
func init() {
rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution")
viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author"))
}
更多参考: viper documentation。
默认添加的flags的可选
参数,如果需要在二进制运行时添加必要
参数,即当该参数没指定时会报错。可使用以下设置。
rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)")
rootCmd.MarkFlagRequired("region")
参考: