问题分析

开发命令行工具的go包很多,不管是否出名至少上百个,这里介绍一个本人修改版本的cli包.使用很简单,可以开发命令行工具.

简单介绍

官方地址 github.com/logoove/cli

  • cli add 1 这种命令用 c.Args()[0]获取的就是第一个参数 1 长度使用c.NArg()==0来判断是否有参数
  • cli all –qq=1 这种是设置名称获取c.GetString(“qq”)

上面是两种获取参数的方法.

使用示例

package main
import (
	"fmt"
	"github.com/logoove/cli"
	"strings"
	"os"
)
func main() {
app := cli.NewApp()
	app.Name = "cli"
	app.Version="1.0.0"
	app.Authors="Yoby\nWechat:logove"
	app.Description="程序描述"
	app.Usage="Golang版本管理工具"
	app.SeeAlso = "2021-"+strconv.Itoa(time.Now().Year())
	app.Commands = []*cli.Command{
		{
			Name:   "add",
			Usage:  "Add file contents to the index",
			Action: func(c *cli.Context) {
				fmt.Println("added files: ", strings.Join(c.Args(), ", "))
			},
		},
		{
			// alias name
			Name:   "a,all",
			Usage:  "Record changes to the repository",
			Flags:  []*cli.Flag {
				{
					Name: "qq,q",
					Usage: "commit message",
				},
			},
			Action: func(c *cli.Context) {
				fmt.Println(c.GetString("qq"))
			},
		},
	}
	app.Run(os.Args)
	}

作品

使用这个库,笔者开发了go切换库gv,python切换库pv,nodejs切换库nv三个,原理都一样.