Latest posts
cliui:给 Go CLI 程序补一层顺手的终端 UI
很多 CLI 程序一开始都很简单:解析参数,跑任务,打印几行结果。等功能多起来之后,问题就变成了另一种样子:配置要排版,错误要醒目,安装和下载要显示进度,交互选择还要能在真实终端和 CI 日志里都工作。
github.com/gookit/cliui 处理的就是这类“还没到完整 TUI,但已经不适合全靠 fmt.Println”的场景。它把常用终端 UI 拆成三个包:show、interact、progress,分别负责结构化输出、交互输入和进度显示。

eget:不用等中央仓库,直接安装 GitHub 和任意下载站的工具
AI 时代来了之后,各种应用、命令行工具的发布节奏明显变快了。GitHub 上每天都有新工具冒出来,一个活跃项目一天发几个版本也不奇怪。
问题是:中央仓库经常慢半拍。快速尝试一个新工具,想试一个刚修好的 bug,或者跟进刚发的新功能,可能要等包维护者更新 formula、bucket、manifest。eget 解决的是这段空窗期:直接从 release、下载站或内部规则里拿到二进制。

rotatefile:给 Go 日志补上文件轮转、压缩和清理
Go 标准库能把日志写到 io.Writer,但不会管文件什么时候切、旧文件留多久、磁盘占用怎么收。项目一旦开始写本地日志,这些问题迟早会冒出来。
github.com/gookit/rotatefile 做的事情很窄:提供一个支持轮转、压缩和清理的 io.Writer。你可以继续用标准库 log/slog、log、zap 或 gookit/slog,只把文件轮转这部分交给它。

GCli v3.8:共享选项、文档生成和参数重排
GCli v3.8 这一轮补的不是花哨功能,而是写复杂 CLI 时经常会撞到的几个缺口:参数可以写在位置参数后面,结构体绑定支持更多 Go 类型,父命令可以定义会被子命令继承的共享选项,还能直接生成 markdown 和 man 文档。
如果你的 CLI 已经有多级命令、共享配置和文档生成需求,这版会少写不少胶水代码。

