使用cobra创建cli命令行工具 Dear 丶 2022-03-18 05:52 181阅读 0赞 ## 什么是cobra? ## Cobra既是用于创建强大的现代CLI应用程序的库,也是用于生成应用程序和命令文件的程序。 * Cobra是一个库,提供了一个简单的界面来创建类似于git&go工具的强大的现代CLI界面。 * Cobra也是一个应用程序,它将生成您的应用程序支架,以快速开发基于Cobra的应用程序。 Cobra提供: * 简单易用的基于子-的CLI: ,app server,app fetch等。 * 完全符合POSIX标准(包括短版和长版) * 嵌套的子命令 * 全局,本地和级联标志 * 易产生的应用程序和命令与cobra init appname&cobra add cmdname * 智能建议(app srver…你的意思是app server?) * 命令和标志的自动帮助生成 * 自动帮助标志识别-h,–help等等。 * 为您的应用程序自动生成bash自动完成 * 为您的应用程序自动生成的手册页 * 命令别名,以便您可以在不破坏它们的情况下进行更改 * 定义您自己的帮助,用法等的灵活性。 * 可选择与viper紧密集成,适用于12因素应用 Cobra建立在命令,参数和标志的结构上。 COMMAND代表动作,Args代表事物,Flags是这些动作的修饰符。 要遵循的模式是 APPNAME VERB NOUN --ADJECTIVE. 或 APPNAME COMMAND ARG --FLAG ## 如何使用cobra? ## 1. 安装 go get -u github.com/spf13/cobra/cobra or 在 github.com 目录下执行以下操作 git clone https://github.com/spf13/cobra.git 2. 初始化项目 # 在gopath路径下的src目录下执行 cobra init ‘项目名称(这里假设为test)’ # 该操作会在src目录下创建test目录 ▾ test/ ▾ cmd/ root.go main.go 3. 添加命令 cobra add 命令(这里假设是version) # 这时cmd文件夹下会生成一个新的文件version.go,在这个文件中定义这个新的命令的动作。 version.go内容如下: import ( "fmt" "github.com/spf13/cobra" ) // versionCmd represents the version command var versionCmd = &cobra.Command{ Use: "version", ## 命令名称 Short: "A brief description of your command", ## 命令的简短介绍 Long: `A longer description that spans multiple lines and likely contains ## 命令详细介绍,可以写出命令的使用例子。 examples and usage of using your command. For example: Cobra is a CLI library for Go that empowers applications. This application is a tool to generate the needed files to quickly create a Cobra application.`, ## 使用本命令需要执行的代码写在这里 Run: func(cmd *cobra.Command, args []string) { fmt.Println("version called") ## 这里表示执行test.exe version后执行的代码 }, } func init() { rootCmd.AddCommand(versionCmd) ## 表示为root添加子命令version // Here you will define your flags and configuration settings. // Cobra supports Persistent Flags which will work for this command // and all subcommands, e.g.: // versionCmd.PersistentFlags().String("foo", "", "A help for foo") // Cobra supports local flags which will only run when this command // is called directly, e.g.: // versionCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") } 此时执行以下代码 > go build -o test > test -h Usage: test [command] Available Commands: help Help about any command version A brief description of your command Flags: --config string config file (default is $HOME/.demo.yaml) -h, --help help for demo 执行新添加的命令 >test version 输出:version called 4. 添加flag # 在version.go文件的init函数中添加局部flag func init() { rootCmd.AddCommand(versionCmd) # 添加flag(bool类型) versionCmd.Flags().BoolP("isok", "p", false, "flag is ok?") } 执行命令,则: >test version -h Usage: test version [flags] Flags: -h, --help help for version -p, --isok flag is ok? Global Flags: --config string config file (default is $HOME/.demo.yaml) 5. flag赋值 1. 使用全局flag 让一个flag对所有命令生效,需要在root.go文件中创建一个变量存储flag值。 # 1.在root.go 文件中添加一个变量name var name string # 2.在init函数中添加全局flag,将flag值存储到变量name中 rootCmd.PersistentFlags().StringVar(&name, "name", "x", "set name") # 3.在子命令version的Run方法中输出name Run: func(cmd *cobra.Command, args []string) { fmt.Println("name is: ", name) } # 4.执行命令 test version --name wfl or test version -x wfl 输出: name is: wfl 2. 使用局部flag 让一个flag对某个命令生效,需要在该命令文件中创建一个变量存储flag值。 # 1.定义变量sunsine var sunshine string # 2.在version.go的init函数中添加flag versionCmd.Flags().StringVarP(&sunshine, "sunshine", "s", false, "you are my sunshine") # 3.在子命令version.go的Run方法中输出 Run: func(cmd *cobra.Command, args []string) { fmt.Println("name is: ", name) fmt.Println("sunshine is: ", sunshine) } # 4.执行命令 test version --name wfl --sunshine wfl 输出: name is: wfl sunshine is: wfl 3. 必填flag 默认情况下,flag是optional(选填),若flag为必填,则需要做如下设置 如将version命令下的sunshine flag设置为必填 # 1.init文件中增加flag定义 versionCmd.Flags().StringVarP(&sunshine, "sunshine", "s", "", "you are my sunshine") versionCmd.MarkFlagRequired("sunshine")
相关 golang cobra命令行工具代码示例 version是一个子命令,用于输出版本号 代码 package main import ( "fmt" "os" 谁借莪1个温暖的怀抱¢/ 2024年03月26日 20:29/ 0 赞/ 31 阅读
相关 Go的命令行工具开发:使用Cobra库 今天我们将深入探讨如何使用Go语言和Cobra库来开发命令行工具。 命令行工具在软件开发中有着广泛的应用,它们快速、高效,且易于自动化。 Go语言因其简洁、高效而被广泛用于 ╰+攻爆jí腚メ/ 2024年02月20日 11:40/ 0 赞/ 42 阅读
相关 vue-cli3 命令行创建项目 第一步:使用 vue create 项目名称 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly ╰半夏微凉°/ 2022年12月20日 11:21/ 0 赞/ 103 阅读
相关 一个CLI命令行脚手架工具 前言 开始本篇文章前,我们先来思考几个问题: 平时自己创建新项目的流程是怎么样的? 团队为了落地规范化(git 提交规范、代码规范、文档规范等),做了哪些事 柔光的暖阳◎/ 2022年11月12日 04:11/ 0 赞/ 181 阅读
相关 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI) > 说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正。 > 原文:[.NET Core Command Line Tools][] > 翻译:[. 柔光的暖阳◎/ 2022年09月24日 05:16/ 0 赞/ 159 阅读
相关 Cobra 快速入门 - 专为命令行程序而生 最近一直在看 [Istio][](一个 `Service Mesh` 框架)相关的东西,当看到其源码时发现了一个新东西 [`Cobra`][Cobra],一查却发现这是个好东西 £神魔★判官ぃ/ 2022年09月03日 05:23/ 0 赞/ 200 阅读
相关 使用Node.js创建命令行脚本工具 在我的职业生涯中已经写过了上百个 `Bash` 脚本,但我的 `Bash` 依然写得很糟糕,每一次我都不得不去查一些简单逻辑结构的语法。如果我想通过 `curl` 或者 `se 青旅半醒/ 2022年05月21日 11:52/ 0 赞/ 165 阅读
相关 Flask内置命令行工具—CLI 应用发现 flask命令在[Flask][]库安装后可使用,使用前需要正确配置`FLASK_APP`环境变量以告知用户程序所在位置。不同平台设置方式有所不同。 Unix 浅浅的花香味﹌/ 2022年04月03日 12:48/ 0 赞/ 736 阅读
相关 使用cobra创建cli命令行工具 什么是cobra? Cobra既是用于创建强大的现代CLI应用程序的库,也是用于生成应用程序和命令文件的程序。 Cobra是一个库,提供了一个简单的界面来创建类似 Dear 丶/ 2022年03月18日 05:52/ 0 赞/ 182 阅读
还没有评论,来说两句吧...