Go-CLI工具开发实战从cobra到命令行应用的企业级实践
文章导语
Go编译为单二进制文件,是CLI工具开发的绝佳语言。cobra+pflag是Go CLI开发的事实标准,Kubernetes、Hugo、etcd等知名项目都使用这套组合。
一、cobra项目初始化
var rootCmd = &cobra.Command{
Use: "mycli",
Short: "一个示例CLI工具",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Hello CLI!")
},
}
func init() {
rootCmd.PersistentFlags().StringVar(&configFile, "config", "config.yaml", "配置文件路径")
}
func main() {
if err := rootCmd.Execute(); err != nil {
os.Exit(1)
}
}
二、子命令与参数验证
var serveCmd = &cobra.Command{
Use: "serve",
Short: "启动服务",
PreRunE: func(cmd *cobra.Command, args []string) error {
if port < 1024 || port > 65535 {
return fmt.Errorf("端口范围: 1024-65535")
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
return startServer(port)
},
}
func init() {
serveCmd.Flags().IntVarP(&port, "port", "p", 8080, "监听端口")
rootCmd.AddCommand(serveCmd)
}
三、全文总结
cobra命令行框架,viper配置文件管理,PreRunE参数验证,RunE错误返回,cobra命令树实现子命令。
网硕互联帮助中心

评论前必须登录!
注册