Golang 命令行框架对比:Cobra VS urfave/cli
Cobra 和 urfave/cli 都是 Golang 用于创建命令行应用的库。Cobra 是一个比较流行的库,它被包含在了 Kubernetes、Docker 等知名项目中。urfave/cli 是一个较新的库,它提供了一个简洁而强大的接口。
以下是使用这两个库创建简单命令行应用的例子:
使用 Cobra 创建应用:
首先,你需要安装 Cobra 工具:
go get -u github.com/spf13/cobra/cobra
然后,创建一个新的应用:
cobra init --pkg-name github.com/yourusername/myapp
cobra add cmd
编写 cmd.go
文件:
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
// cmdCmd represents the cmd command
var cmdCmd = &cobra.Command{
Use: "cmd",
Short: "A brief description of your command",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("cmd called")
},
}
func init() {
rootCmd.AddCommand(cmdCmd)
}
使用 urfave/cli 创建应用:
首先,安装 urfave/cli:
go get -u github.com/urfave/cli
编写 main.go
文件:
package main
import (
"github.com/urfave/cli"
"os"
)
func main() {
app := cli.NewApp()
app.Commands = []cli.Command{
{
Name: "cmd",
Usage: "call cmd",
Action: func(c *cli.Context) error {
fmt.Println("cmd called")
return nil
},
},
}
app.Run(os.Args)
}
在这两个例子中,我们创建了一个简单的命令 cmd
,当调用这个命令时,它会打印出信息 "cmd called"。
两个库的选择取决于你的个人喜好和项目的具体需求。Cobra 以其广泛的应用和社区支持而著名,而 urfave/cli 提供了一个更加简洁和直观的接口。
评论已关闭