云计算百科
云计算领域专业知识百科平台

Go-CLI工具开发实战从cobra到命令行应用实践

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命令树实现子命令。

参考文献

  • cobra: https://github.com/spf13/cobra
  • viper: https://github.com/spf13/viper
  • Go标准库 flag包
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » Go-CLI工具开发实战从cobra到命令行应用实践
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!