SEARU.ORG
当前位置:SEARU.ORG > Linux 软件 > 正文

命令行程序构建工具 mkideal/cli

cli是一个用go语言写成的用于快速构建go语言命令行程序的工具。

有些什么特色呢

  • 简单,容易上手

  • 有安全检查. 包括类型检查,值范围检查,更强大的是自定义的验证函数.

  • 基于go语言的tag属性实现,参数定义结构化,简洁优雅.支持4种tag: cli,usage,dft, name.

  • 支持默认值标签dft,可以用环境变量做默认值,支持required声明.

  • 支持单个flag多个名字,像 -h –help 这样的.

  • 支持命令树形结构,N层子命令随意玩.

  • 支持子命令错误纠正提示,hlp会问你是要help吗

  • 天然的命令树形结构摇身一变就可以变成HTTP路由了,像$app hello world -> /hello/world

  • 支持命令行参数结构体的继承

  • 支持短flag的组合式.-x -y -z -> -xyz, 不过必须全是bool型的才可以组合

  • 支持长这样的-Fvalue的用法,它就等于-F value,不过-F不能是bool型

  • 可以用 — 来隔离flags和arguments

  • 支持使用数组和map了,数组的-F v1 -F v2,map的-F k1=v1 -F k2=v2

    下图是用cli创建的示例程序gogo的帮助显示:

一个hello的例子

package main

import (
    "github.com/mkideal/cli"
)

type argT struct {
    Help bool   `cli:"!h,help" usage:"display help information"`
    Name string `cli:"name" usage:"your name" dft:"world"`
    Age  uint8  `cli:"a,age" usage:"your age" dft:"100"`
}

func main() {
    cli.Run(&argT{}, func(ctx *cli.Context) error {
        argv := ctx.Argv().(*argT)
        if argv.Help {
            ctx.String(ctx.Usage())
        } else {
            ctx.String("Hello, %s! Your age is %d?\n", argv.Name, argv.Age)
        }
        return nil
    })
}

未经允许不得转载:SEARU.ORG » 命令行程序构建工具 mkideal/cli

赞 (0)
分享到:更多 ()

评论 0