golang cobra: 在沒有添加任何參數的情況下預設產生 help message
Contents
問題描述
最近在使用 cobra 編寫一個簡單的 command line
應用程式,過程中遇到一個之前都沒有想過的問題,把解決方式紀錄在這邊
一般來說用 cobra
寫的程式要顯示詳細的使用教學都要使用 --help
參數,如圖
但是我又想到 golangci-lint 這個工具同樣也是用 cobra 來寫 command line
的應用,卻可以在沒有添加參數的時候跳出 --help
的說明
像是這樣
所以我特別找了一些資料,發現其實解決的方法滿簡單的
解決方法
一般的教學文章在介紹 cobra 的時候都會訂一個 rootCmd
一類的物件,作為你的 command line
應用一開始的 root
,之後的指令就會用
rootCmd.AddCommand(功能名稱)
的方式添加進去
所以解決方式很簡單,只要在 rootCmd
定義的地方判斷如果其 args
的長度為零,就呼叫預設的 Help
function 即可。
var rootCmd = &cobra.Command{
Use: "leit",
Short: "A calendar application in command line.",
Long: doc,
Run: func(cmd *cobra.Command, args []string) {
if len(args) == 0 {
_ = cmd.Help()
}
},
}
接著再編譯看看
可以看到應用程式在沒有加任何參數的情況下也會顯示 --help
的結果了。