CLI 与配置管理:flag、cobra 与 viper
kubectl、docker、gh、hugo 均以 Go 编写,并共享同一套基础设施:spf13/cobra 管理命令树,spf13/viper 管理配置。CLI 同时服务两类调用方:人类用户依赖 --help 与可读输出,脚本与 CI 只依赖退出码和 stdout。退出码约定、标准输出与标准错误分离、信号处理、版本号可追溯性等 Unix 纪律,决定工具能否进入生产环境。下文依次讨论选型原则、上述惯例、cobra 与 viper 的规范用法及两者的集成。
14 min read