Go
package main
import(
"fmt"
"os"
"github.com/spf13/cobra"
)
func f1(){
fmt.Printf("这是主命令的运行函数 ")
}
func f2(){
fmt.Println("这是一个子命令的运行函数")
}
func main(){
var rootCmd = &cobra.Command{
Use: "myapp",
Short:"一个主CLI程序帮助",
Long: "这是一个Cobr构建的主CLi帮助信息",
Run: func(cmd *cobra.Command, args []string){
f1()
},
}
var subCmd = &cobra.Command{
Use: "subcommand", //myapp 主CLI -h时候打印的内容
Short:"这是一个子命令帮助信息",
Long: "这是一个Cobra 构建的子CLI应用程序帮助信息", //
Run: func(cmd *cobra.Command, args []string){
f2()
},
}
//子命令添加到主命令里
rootCmd.AddCommand(subCmd)
//打印错误
err := rootCmd.Execute()
if err != nil {
os.Exit(1)
fmt.Println(err)
}
}



添加 Flag 传值
Go
package main
import (
"fmt"
"github.com/spf13/cobra"
"os"
)
func main() {
var greeting string
var verbose bool
var rootCmd = &cobra.Command{
Use: "myapp",
Short: "一个主CLI程序帮助",
Long: "这是一个Cobr构建的主CLi帮助信息",
Run: func(cmd *cobra.Command, args []string) {
fmt.Printf("这是主命令的运行函数,gretting=%s,verbose=%v\n", greeting, verbose)
},
}
rootCmd.PersistentFlags().StringVarP(&greeting, "gretting", "g", "Hello", "欢迎词")
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "详细模式")
var subCmd = &cobra.Command{
Use: "subcommand",
Short: "这是一个子命令帮助信息",
Long: "这是一个Cobra 构建的子CLI应用程序帮助信息",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("这是一个子命令的运行函数,gretting=%s,verbose=%v\n", greeting, verbose)
},
}
rootCmd.AddCommand(subCmd)
err := rootCmd.Execute()
if err != nil {
os.Exit(1)
// fmt.Println(err)
}
}

添加参数传值
Go
package main
import (
"fmt"
"github.com/spf13/cobra"
"os"
)
func main() {
var rootCmd = &cobra.Command{
Use: "myapp",
Short: "一个主CLI程序帮助",
Long: "这是一个Cobr构建的主CLi帮助信息",
Run: func(cmd *cobra.Command, args []string) {
fmt.Printf("欢迎使用 myapp:参数 %v\n",args) //args是切片,可以用args[0]取出第一个参数
},
}
// rootCmd.PersistentFlags().StringVarP(&greeting, "gretting", "g", "Hello", "欢迎词")
// rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "详细模式")
err := rootCmd.Execute()
if err != nil {
os.Exit(1)
// fmt.Println(err)
}
}
