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

blov2016-04-03 16:00:00 • 2384 次点击    
这是一个分享于 2016-04-03 16:00:00 的项目,其中的信息可能已经有所发展或是发生改变。

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

一个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
    })
}

CLI - A package for building command line app with goRead More

Latest commit to the master branch on 2-4-2024
Download as zip
授权协议:
MIT
开发语言:
Google Go 查看源码»
操作系统:
跨平台
2384 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传