我有一個cobra命令
var mycommandCmd = &cobra.Command{
Use: "mycommand",
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
viper.BindPFlags(cmd.Flags())
和一個子命令
var mysubcommandCmd = &cobra.Command{
Use: "mysubcommand",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
viper.BindPFlags(cmd.Flags())
我當然系結在一起
mycommandCmd.AddCommand(mysubcommandCmd)
我也為他們倆準備了一些標志
mycommandCmd.PersistentFlags().BoolP("foo", "", true, "Whether to foo")
mysubcommandCmd.Flags().BoolP("foobar", "", true, "Whether to foobar")
我的問題如下:
假設最終go二進制檔案被命名prog,是否有一個 ( cobra/ viper) 內置方式來檢查在子命令呼叫期間是否實際傳遞了任何標志?
即我如何以編程方式區分這
prog mycommand mysubcommand --foobar
和這個
prog mycommand mysubcommand
檢查默認標志值當然不起作用(并且不會根據標志編號進行縮放)
uj5u.com熱心網友回復:
你可以做:
isSet:=cmd.Flags().Lookup("foobar").Changed
如果設定了標志,或者使用了默認值,則應該回傳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358272.html
上一篇:檢查js.Value是否存在
下一篇:我的函式應該將通道作為輸入嗎?
