Go 命令行工具 CLI 生成框架

最近工作中需要写一个命令行的工具,封装一些常用的操作提供给客户使用。本身逻辑不复杂,但是如果要自己手写命令的参数处理的话,就不那么简单了。

今天要推荐的就是一个生成命令行工具的框架项目:Cobra,很多著名的开源项目都使用了,比如 Kubernetes, etcd, Docker 等等。

Cobra 提供了如下一些主要的功能:

  • 非常容易生成包含子命令的CLI,比如:app serverapp fetch
  • 完全兼容 POSIX 的参数解析,包含长参数和短参数
  • 智能提示
  • 自动生成帮助命令
  • 支持命令自动补全
  • 生成命令 man 文档

接下来简单介绍一下怎么开箱即用来创建一个自己的命令行程序,也可以查看文档:Cobra Generator

# 安装 cobra, 怎么安装/配置 go 的环境就不介绍了
go get -u github.com/spf13/cobra/cobra

# 初始化应用
cobra init [app]

# 增加子命令 serve  config
cobra add serve
cobra add config

# 目录结构, 只需要在 servceconfig 填加对应的逻辑即可
 app/
     cmd/
        serve.go
        config.go
        create.go
      main.go

使用 Go 的一个好处是代码可以跨平台编译运行的二进制,且二进制运行不依赖其他运行环境,不用担心跨平台的问题。

项目地址:https://github.com/spf13/cobra


更多精彩请扫码关注如下公众号。

Written on January 1, 2020