命令行工具
具有常见 CLI 模式的命令行应用程序模板
jzero new simplecli --branch cli
特性
- 命令解析
- 交互式提示
- 配置管理
- 输出格式化
快速开始指南
命令行工具模板
一个命令行应用程序模板,实现了常见的 CLI 模式和最佳实践。
特性
- 命令解析:内置参数和标志解析
- 交互式提示:用户友好的交互输入
- 配置管理:支持 YAML/TOML/JSON 配置
- 丰富的输出:彩色和格式化的控制台输出
- 错误处理:优雅的错误消息和退出码
快速开始
jzero new simplecli --branch cli
cd simplecli
go mod tidy
go build -o cli main.go
./cli --help项目结构
.
├── cmd/ # 命令实现
├── config/ # 配置处理
├── internal/
│ ├── printer/ # 输出格式化
│ └── validator/ # 输入验证
├── main.go # 入口点
└── config.yaml # 默认配置使用示例
基本命令
./cli command-name --flag value交互模式
./cli interactive
# 按照提示操作...配置文件
创建 config.yaml:
logLevel: info
outputFormat: json
timeout: 30s使用配置运行:
./cli --config config.yaml添加新命令
- 在
cmd/中创建命令文件:
package cmd
import (
"github.com/urfave/cli/v2"
)
func NewExampleCommand() *cli.Command {
return &cli.Command{
Name: "example",
Usage: "示例命令描述",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "input",
Usage: "输入文件路径",
},
},
Action: func(c *cli.Context) error {
// 你的逻辑
return nil
},
}
}- 在
main.go中注册:
app.Commands = append(app.Commands, cmd.NewExampleCommand())构建和分发
为多平台构建
# macOS
GOOS=darwin GOARCH=amd64 go build -o cli-darwin-amd64 main.go
# Linux
GOOS=linux GOARCH=amd64 go build -o cli-linux-amd64 main.go
# Windows
GOOS=windows GOARCH=amd64 go build -o cli-windows-amd64.exe main.goHomebrew 安装(可选)
创建 tap 以便于安装:
brew tap yourusername/cli
brew install yourusername/cli/cli最佳实践
- 退出码:使用标准退出码(0 表示成功,1 表示错误)
- 错误消息:提供有用的错误消息和建议
- 标志:同时使用短标志和长标志(
-v和--verbose) - 帮助文本:在命令帮助文本中包含示例
- 测试:为命令逻辑编写测试