Mix XCLI V1.1 - Go 命令行交互开发框架
Mix XCLI
命令行交互开发框架
CLI Interactive Commander
Overview
一个命令行交互开发库,它可以让单个 CLI 程序可执行多个命令,同时它还包括命令行参数获取、全局 panic 捕获与处理、程序后台执行等命令行开发常用功能。
https://github.com/mix-go/xcli
Installation
go get github.com/mix-go/xcli
Quick start
package main import ( "github.com/mix-go/xcli" "github.com/mix-go/xcli/flag" ) func main() { xcli.SetName("app").SetVersion("0.0.0-alpha") cmd := &xcli.Command{ Name: "hello", Short: "Echo demo", Run: func() { name := flag.Match("n", "name").String("default") // do something }, } opt := &xcli.Option{ Names: []string{"n", "name"}, Usage: "Your name", } cmd.AddOption(opt) xcli.AddCommand(cmd).Run() }
编译后,查看整个命令行程序的帮助
$ ./go_build_main_go Usage: ./go_build_main_go [OPTIONS] COMMAND [opt...] Commands: hello Echo demo Global Options: -h, --help Print usage -v, --version Print version information Run './go_build_main_go COMMAND --help' for more information on a command. Developed with Mix Go framework. (openmix.org/mix-go)
查看命令行程序的版本信息
$ ./go_build_main_go -v app 0.0.0-alpha, framework 1.0.9
查看 hello
命令的帮助
$ ./go_build_main_go hello --help Usage: ./go_build_main_go hello [opt...] Command Options: -n, --name Your name Developed with Mix Go framework. (openmix.org/mix-go)
执行 hello
命令
$ ./go_build_main_go hello
Flag 参数获取
该 flag 比 golang 自带的更加好用,不需要 Parse 操作
参数规则 (部分UNIX风格+GNU风格)
/examples/app home -d -rf --debug -v vvv --page 23 -s=test --name=john arg0
- 命令:
- 第一个参数,可以为空:
home
- 第一个参数,可以为空:
- 选项:
- 短选项:一个中杠,如
-d
、-rf
- 长选项:二个中杠,如:
--debug
- 短选项:一个中杠,如
- 选项值:
- 无值:
-d
、-rf
、--debug
- 有值(空格):
-v vvv
、--page 23
- 有值(等号):
-s=test
、--name=john
- 无值:
- 参数:
- 没有定义
-
的参数:arg0
- 没有定义
获取选项,可以获取 String
、Bool
、Int64
、Float64
多种类型,也可以指定默认值。
name := flag.Match("n", "name").String("Xiao Ming")
获取第一个参数
arg0 := flag.Arguments().First().String()
获取全部参数
for k, v := range flag.Arguments().Values() { // do something }
Daemon 后台执行
将命令行程序变为后台执行,该方法只可在 Main 协程中使用。
process.Daemon()
我们可以通过配合 flag
获取参数,实现通过某几个参数控制程序后台执行。
if flag.Match("d", "daemon").Bool() { process.Daemon() }
上面就实现了一个当命令行参数中带有 -d/--daemon
参数时,程序就在后台执行。
Handle panic 错误处理
h := func(next func()) { defer func() { if err := recover(); err != nil { // handle panic } }() next() } cmd := &xcli.Command{ Name: "hello", Short: "Echo demo", Run: func() { // do something }, } xcli.Use(h).AddCommand(cmd).Run()
Application
我们在编写代码时,可能会要用到 App 中的一些信息。
// 获取基础路径(二进制所在目录路径) xcli.App().BasePath // App名称 xcli.App().Name // App版本号 xcli.App().Version // 是否开启debug xcli.App().Debug
Singleton 单命令
当我们的 CLI 只有一个命令时,只需要配置一下 Singleton
:
cmd := &xcli.Command{ Name: "hello", Short: "Echo demo", Run: func() { // do something }, Singleton: true, }
命令的 Options 将会在 -h/--help
中打印
$ ./go_build_main_go Usage: ./go_build_main_go [OPTIONS] COMMAND [opt...] Command Options: -n, --name Your name Global Options: -h, --help Print usage -v, --version Print version information Run './go_build_main_go --help' for more information on a command. Developed with Mix Go framework. (openmix.org/mix-go)
Default 默认执行
当我们的 CLI 有 CUI 时,需要实现点击后默认启动 UI 界面,只需要配置一下 Default
:
cmd := &xcli.Command{ Name: "hello", Short: "Echo demo", Run: func() { // do something }, Default: true, }
License
Apache License Version 2.0, http://www.apache.org/licenses/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Newbe.Claptrap 0.10.2 发布,Blazor & Minion
Newbe.Claptrap 0.10.2 发布,我们为项目模板引入了 Minion 以及 Blazor 制作的交互界面。 更新内容 类库常规升级 升级了相关的所有类库至最新版本。包括 Dapr SDK 1.1 等等。 项目模板增强 现在,我们为最新的项目模板引入了 Minion 以演示如何使用 Minion 处理旁路业务逻辑。 另外我们也引入了一个使用ant-design-blazor制作的的模拟演示界面,用于展示拍卖竞价样例中的数据情况。 可自定义 Event 和 State 的序列化过程 现在,开发者可以自定义 Event 和 State 的序列化过程,从而定义更加自由的保存和加载过程。 例如,在拍卖竞价示例中,我们使用到了 SortDictionary 作为 State 的一部分。但是,如果直接采用原生的 Json 序列化,将会导致 SortDictionary 的比较器丢失。因此,此时开发者可以使用自定义的 State Loader 来解决该问题。 详细的使用方案可以常见最新的项目模板。 软件介绍 这是以反应式、事件溯源和Actor模式作为基本理论的一套服务端开发框架。于此...
- 下一篇
Grafana、Loki 和 Tempo 变更开源许可证为 AGPLv3
Grafana Labs 公司宣布旗下核心开源项目 (Grafana, Grafana Loki 和 Grafana Tempo)的许可证将从Apache License 2.0 变更为 AGPLv3,相关插件和库则仍保留使用 Apache License。 Grafana 是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后,Grafana 可以在浏览器显示数据图表和警告。该软件的企业版本提供更多的扩展功能。扩展功能通过插件的形式提供,终端用户可以自定义自己的数据面板界面以及数据请求方式。 AGPLv3 是经OSI 批准的开源许可证,符合自由和开源软件的所有标准。Grafana Labs CEO Raj Dutt 表示,此次开源许可证的变更不会影响他们的用户使用、修改或分发Grafana Labs 的开源软件,但根据 AGPL 的条款,如果使用者对这些软件进行了修改,则必须将修改后的版本的源代码回馈给上游。这些条款旨在鼓励修改软件的第三方也能为项目和社区做出贡献。Grafana Labs 公司认为这是一种更公平的方式,并且有助于建立更强大的社区。 Raj 表示自己...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- 设置Eclipse缩进为4个空格,增强代码规范