urfave/cli 是一个用于创建命令行应用程序的 Go 语言库,可以让你轻松地定义和解析命令行参数,并且可以生成帮助文档和自动补全等功能。下面是一个简单的示例,演示如何使用 urfave/cli 来创建一个命令行程序。
首先,我们需要安装 urfave/cli 库,可以使用以下命令进行安装:
$ go get github.com/urfave/cli
接下来,我们创建一个 main.go 文件,并导入 urfave/cli 库:
package main
import (
"fmt"
"os"
"github.com/urfave/cli"
)
现在,我们可以定义我们的命令行应用程序了。在这个示例中,我们创建一个名为 hello 的命令,它接收一个参数 name,并输出 “Hello, name!” 的欢迎消息。
func main() {
app := cli.NewApp()
app.Name = "hello"
app.Usage = "print a greeting message"
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "name, n",
Usage: "your name",
},
}
app.Action = func(c *cli.Context) error {
name := "World"
if c.IsSet("name") {
name = c.String("name")
}
fmt.Printf("Hello, %s!\n", name)
return nil
}
err := app.Run(os.Args)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}
在这个代码片段中,我们首先创建了一个新的应用程序实例 app。然后,我们定义了程序名称和用途。接下来,我们定义了一个名为 name 的命令行参数,并在 app.Flags 中注册了它。最后,我们定义了命令行程序的动作,使用 fmt.Printf 输出欢迎消息。
现在,我们可以使用 go build 命令来构建可执行文件,并运行我们的程序:
$ go build -o hello
$ ./hello --name Alice
Hello, Alice!
以上示例中,我们使用了 --name 参数,并将其值设置为 Alice,因此程序输出了 “Hello, Alice!”。
当我们在命令行上输入 ./hello -h 或者 ./hello --help 时,可以看到程序自动生成的帮助文档:
$ ./hello --help
NAME:
hello - print a greeting message
USAGE:
hello [global options] command [command options] [arguments...]
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--name value, -n value your name
--help, -h show help (default: false)
这个帮助文档告诉我们如何使用 hello 命令,并列出了可用的命令行参数。