Go语言编写的简单易用命令行应用开发框架,支持多命令/子命令管理、选项参数绑定、彩色终端输出、进度条、表格展示和bash/zsh自动补全脚本生成。零依赖、Windows兼容,适用于快速构建专业的CLI工具。
【适用场景】
本技能适用于以下场景:
1. 创建多命令CLI应用:快速构建包含多个子命令的专业级命令行工具。 2. 绑定选项和参数:通过结构体标签或代码绑定方式,便捷定义命令行选项和位置参数。 3. 彩色终端输出:为CLI工具添加颜色渲染、交互输入、进度条等用户友好的终端体验。 4. 数据展示:生成格式化的表格、列表、JSON输出,提升CLI工具的信息展示能力。 5. 自动补全脚本:一键生成 bash/zsh 的命令补全脚本,提升用户体验。
【操作步骤】
第一步:初始化项目 ```bash go get github.com/gookit/gcli/v3 ```
第二步:创建应用和命令 ```go package main
import "github.com/gookit/gcli/v3"
func main() { app := gcli.NewApp() app.Version = "1.0.3" app.Desc = "my cli application"
app.Add(&gcli.Command{ Name: "demo", Desc: "demo command", Aliases: []string{"dm"}, Func: func(cmd *gcli.Command, args []string) error { gcli.Println("hello, in the demo command") return nil }, })
app.Run(nil) } ```
第三步:绑定选项和参数 支持两种方式:结构体标签绑定和代码直接绑定。选项须在位置参数之前,遇见首个非选项即停止解析。
第四步:添加颜色和交互 ```go // 彩色输出 gcli.Info("info message") gcli.Success("success message") gcli.Warn("warning message") gcli.Error("error message")
// 进度条 gcli.WithLoading(func() { // 耗时代码 }) ```
第五步:生成自动补全脚本 ```bash
生成的脚本重定向到文件
go run ./_examples/gen_complete.go > complete.sh source complete.sh ```【代码模板】
多级子命令示例 ```go app.Add(&gcli.Command{ Name: "parent", Sub: []*gcli.Command{ {Name: "child1", ...}, {Name: "child2", ...}, }, }) ```
表格输出示例 ```go import "github.com/gookit/gcli/v3/show"
show.Table(structSlice, &show.TableOption{Style: show.BorderStyle}) ```
交互式输入 ```go // 确认选择 ok := gcli.Confirm("Continue?")
// 多选列表 selected := gcli.Select("Choose:", options) ```
【复盘要点】
1. 零依赖:纯 Go 标准库实现,无第三方依赖,安装简单。 2. POSIX风格兼容:支持短选项组合(如 -ab),符合 Unix 命令行惯例。 3. Windows兼容:颜色输出和进度条在 Windows 终端同样正常工作。 4. 自动帮助生成:命令执行错误时自动提示相似命令,降低用户学习成本。 5. 丰富的演示示例:官方提供多个参考文档(commands.md、flags-args.md、color-interact.md 等),上手快速。
来源:GitHub https://github.com/gookit/skills