为了解决这些问题,github.com/spf13/cobra 就可以派上用场。 github.com/spf13/cobra 是一个用于构建强大的命令行应用程序的 Go 语言库。 以下是 cobra 库的主要特性和用法示例: 主要特性 1.子命令支持:cobra 允许您创建包含多个子命令的命令行工具。这使得您可以组织和管理大型 CLI 应用程序。 6.内置的有效命令行解析:cobra 使用标准库的 flag 包进行命令行解析,同时提供更高级的功能。 用法示例 以下是一个简单的示例,演示了如何使用 cobra 创建一个简单的命令行工具: package main import ( "fmt" "github.com/spf13/cobra " "os" ) func main() { var rootCmd = &cobra.Command{Use: "myapp"} var helloCmd = &cobra.Command
本文总结了在使用cobra的一些经验参数同时支持中划线和下划线例如 --tenant_id 和 --tenant-idfor _, cmd := range RootCmd.Commands() { , 'false'], help=_('admin state of agent'))如上的python列子中,限制admin_state_up参数只能在四种值中选择,如果输入其他值,则会报错,但是在cobra TRue is ivalid, choice=[True true False false]使用自定义类型也可以非常方便的实现参数输入校验,而不用在也业务逻辑搅合在用一起自定义命令usage模块对于cobra {Use: "hello",Short: fmt.Sprintf("Commands for Hello"),PersistentPreRun: func(cmd *cobra.Command, args []string) {if cmd.Flags().Changed("version") {os.Exit(0)}},Run: func(cmd *cobra.Command, args []string
1、Cobra 介绍 1.1 Cobra 概述 Cobra 是一个 Golang 包,它提供了简单的接口来创建命令行程序。 使用 cobra 很容易生成应用程序和命令(cobra init appname 和 cobra add cmdname)。 cobra 程序(Window: cobra.exe, MacOS: cobra)。 由于 Cobra 提供了代码生成器的功能,我们可以直接使用 Cobra 提供的初始化命令 cobra init 进行快速初始化创建 Cobra 工程。 \bin\cobra init cobra-demo --pkg-name github.com/xcbeyond/cobra-demo Your Cobra application is ready
cobra简介 cobra是一个命令行程序库,可以用来编写命令行程序,非常简单易用,类似于Go标准库中的Flag包,不过它比Flag包强大很多。 cobra安装 cobra安装非常简单,与我们安装其他第三方库是一样的。执行下面的命令即可。 go get -u github.com/spf13/cobra/cobra 然后检查下是否安装成功,执行下面的命令,输出说明信息说明已安装成功。 如果没有正确输出,检查是否已将cobra加入到环境变量PATH中。 cobra -h cobra使用 初始化项目 我们通过写一个demo项目学习cobra使用。 的基本使用以及代码组织结构,这为我们学习其他项目能够有所帮助,小编学习cobra原因是在看etcd源码的时候,它里面的etcdctl包基本都是用cobra包结合client包实现的,所以好奇cobra是个什么东东
cobra是go语言中一个非常强大的命令行构建工具,我们非常熟悉的docker、k8s、etcd都是基于cobra开发的。如果你想打造自己的命令行工具,那么cobra就是你的最佳选择。 cobra支持的功能非常完善,比如:help、子命令、标志等,它的使用还是非常简单的,下面我们一起看下。一、命令组成结构在正式开始介绍cobra来,我们先来了解下命令的组成结构。 初始化项目shell复制代码mkdir cobra-practicecd cobra-practicego mod init example/cobra-practicetouch main.gomain.go 内容go复制代码package mainimport ("fmt""github.com/spf13/cobra")func main() {rootCmd := cobra.Command{// Use 2.自定义参数校验cobra.ExactArgs()是cobra自带的参数校验,非常方便,当然如果你想自定义参数校验也是可以的。
通过本文,读者将能够掌握以下内容: Cobra 库的基本概念和核心功能 如何安装和设置 Cobra 环境 如何使用 Cobra 快速创建简单和复杂的命令行应用程序 Cobra 中的高级特性和技巧,以及最佳实践 安装 Cobra 库 要安装 Cobra 库,您可以通过 Go 语言的包管理工具 go get 来获取最新版本的 Cobra。请按照以下步骤进行安装: 打开终端或命令行界面。 执行以下命令以安装 Cobra: go get -u github.com/spf13/cobra@latest 这个命令将会下载 Cobra 库及其依赖,并将其安装到您的 Go 工作区中。 一旦您完成了 Cobra 的安装和设置,您就可以开始使用 Cobra 来开发强大的命令行应用程序了。 Cobra 的工作原理和内部机制 Cobra 的工作原理和内部机制主要包括以下几个关键步骤: 初始化命令:首先,创建一个根命令并初始化 Cobra 库。
这些 CLI 工具,都是基于 Cobra[1] 库开发,命令自动补全功能也是该库提供的一个功能,本篇文章就来讲讲如何使用 Cobra 实现命令自动补全的。 Cobra Shell Completion Cobra 可以作为一个 Golang 包,用来构建功能强大的命令行程序;同时也可以作为 CLI 工具,用来生成应用程序和命令文件。 由于文本主要介绍 Cobra 的命令自动补全功能,更多内容请查阅官网[2]。 ? Cobra 基础用法 Cobra 当前的最新版本为 v1.0.0,支持生成多种 Shell 的自动补全脚本,目前支持: •Bash•Zsh•Fish•PowerShell 如上所述,Cobra 不但是一个功能强大的 引用链接 [1] Cobra: https://github.com/spf13/cobra [2] 官网: https://github.com/spf13/cobra [3] 官方文档: https
Cobra 是一个功能强大的现代化 CLI 应用程序库,有很多知名的 Go 项目使用 Cobra 进行构建,比如:Kubernetes、Docker、Hugo 等等 概念 Cobra 是构建在命令、参数和标识符之上的 cobra 安装成功后,现在我们可以使用 cobra init 命令来初始化 CLI 应用的脚手架: $ cobra init --pkg-name my-calc Your Cobra applicaton 添加数据 在项目根目录下面创建一个名为 add 的命令, Cobra 添加一个新的命令的方式为:cobra add<commandName>,所以我们这里直接这样执行: $ cobra add add 首先是声明了一个名为 addCmd 的结构体变量,类型为 *cobra.Command 指针类型, *cobra.Command 有一个 RUN 函数,带有 *cobra.Command 指针和一个字符串切片参数 /my-calc Hello Cobra CLI $ .
简介 cobra是一个命令行程序库,可以用来编写命令行程序。同时,它也提供了一个脚手架, 用于生成基于 cobra 的应用程序框架。 下面命令安装了cobra生成器程序和 cobra 库: $ go get github.com/spf13/cobra/cobra 如果出现了golang.org/x/text库找不到之类的错误,需要手动从 /spf13/cobra. 使用cobra init命令创建一个 cobra 应用程序: $ cobra init scaffold --pkg-name github.com/go-quiz/go-daily-lib/cobra cobra 库的使用非常广泛,很多知名项目都有用到,前面也提到过这些项目。 学习这些项目是如何使用 cobra 的,可以从中学习 cobra 的特性和最佳实践。这也是学习开源项目的一个很好的途径。
2.5. kustz 使用 cobra 实现 kustz 命令图片图片大家好, 我是老麦。 一个运维小学生。有了前面几章的努力, 我们的命令行工具 kustz 终于要问世了。 代码还是在 Github, 文章中有不清楚的可以上去看看https://github.com/tangx/kustz/tree/chapter/05-build-kustz-cli-with-cobra 使用 cobra 创建命令cobra 真的是一个非常好用的命令行工具。 go get -u github.com/spf13/cobra在 /cmd/kustz/cmd/root.go 中创建 根命令 rootCmd。并定义 执行函数 Execute。
本文主要介绍Steve Francia(spf13)大神写的用于快速构建命令行程序的golang包cobra,基于cobra写命令行的著名项目一只手数不过来:Docker CLI、Helm、istio、 下面进入正题 cobra能帮我们做啥? ---- cobra包提供以下功能: 轻松创建基于子命令的 CLI:如 app server、 app fetch等。 cobra基础使用 ---- 安装cobra包和二进制工具cobra-cli,cobra-cli可以帮助我们快速创建出一个cobra基础代码结构。 go get -u github.com/spf13/cobra@latest go install github.com/spf13/cobra-cli@latest 启用 GO111MODULE=on cobra-cli add wget cobra-cli add ping 现在的目录结构如下: # tree xpower xpower ├── cmd │ ├── ping.go │ ├──
cmd := newDockerCommand(dockerCli) 然后创建DockerCommand对象,这个是github.com/spf13/cobra库里所提及的所有命令的根命令。 这个方法在cli/cobra.go里声明。 这里要提一下github.com/spf13/cobra库的工作原理。 github.com/spf13/cobra库将一个命令行工具的所有命令抽象为一个层次结构,最上层为根命令,每个命令又可以定义它的子命令。 func NewSystemCommand(dockerCli *command.DockerCli) *cobra.Command { cmd := &cobra.Command{ Use: ) *cobra.Command { var opts infoOptions cmd := &cobra.Command{ Use: "info [OPTIONS]", Short:
Cobra介绍 Cobra 是一个用于创建强大的现代 CLI 应用程序的库。几乎包含了你所需要的所有元素。 可选与viper无缝集成,用于 12 要素应用程序(viper是作者的另一个项目,用来给go语言程序提供配置解决方案,可以将cobra和viper结合使用) Cobra安装 cobra提供了用于go get go get -u github.com/spf13/cobra@latest 同时,Cobra提供了一个方便的命令行程序生成器cobra-cli,后续我们会使用cobra-cli来自动生成模板,简化我们的工作 source ~/.bashrc Cobra使用 Cobra提供了一个生成器(cobra-cli),可以用来初始化你的命令行程序。这是将 Cobra 整合到您的应用程序中的最简单方法。 cobra-cli只是帮助你简化了创建过程。下面使用cobra-cli生成器来创建我们自己的命令行程序。
下载:go install github.com/spf13/cobra-cli@latest执行init创建一个初始项目:cobra-cli init发现多了个cmd/root.go和main.go我们这里先不看 cobra-cli add test把默认的注释去掉后,然后添加获取输入的参数。 package cmd import ( "fmt" "github.com/spf13/cobra" ) var testCmd = &cobra.Command{ `, Run: func(cmd *cobra.Command, args []string) { fmt.Println("我是test,我被调用了") //获取 Cobra支持持久标志,如果在这里定义,它将是应用程序的全局标志。
通过本文,读者将能够掌握以下内容:Cobra 库的基本概念和核心功能如何安装和设置 Cobra 环境如何使用 Cobra 快速创建简单和复杂的命令行应用程序Cobra 中的高级特性和技巧,以及最佳实践Cobra 安装 Cobra 库要安装 Cobra 库,您可以通过 Go 语言的包管理工具 go get 来获取最新版本的 Cobra。请按照以下步骤进行安装:打开终端或命令行界面。 执行以下命令以安装 Cobra:go get -u github.com/spf13/cobra@latest这个命令将会下载 Cobra 库及其依赖,并将其安装到您的 Go 工作区中。 一旦您完成了 Cobra 的安装和设置,您就可以开始使用 Cobra 来开发强大的命令行应用程序了。 Cobra 的工作原理和内部机制Cobra 的工作原理和内部机制主要包括以下几个关键步骤:初始化命令:首先,创建一个根命令并初始化 Cobra 库。
cobra https://github.com/spf13/cobra 是 golang 中一个非常好用的 命令 开发库。 cobrautils.BindFlags(rootCmd, &stu) 安装 go get -u github.com/go-jarvis/cobrautils 使用方式 Attention: 由于 cobra flag 与 cobra 定义一致 func (f *FlagSet) Uint64VarP(p *uint64, name, shorthand string, value uint64, usage package main import ( "fmt" "github.com/go-jarvis/cobrautils" "github.com/spf13/cobra { Use: "root", Run: func(cmd *cobra.Command, args []string) { _ = cmd.Help()
Cobra 的主要组件命令(Command):Cobra 的核心是 Command 结构体,每个命令都被表示为一个 Command 实例。命令可以有子命令,从而形成一个层次结构。 自动生成帮助和手册:Cobra 自动生成命令的帮助信息,帮助用户了解命令及其使用方法。只需简单配置,Cobra 还可以生成 shell 的自动补全脚本。 应用场景Cobra 被广泛用于构建 Go 语言的 CLI 应用程序,许多著名的 Go 项目都采用了 Cobra,例如 Kubernetes 的 kubectl 工具、Docker 的 docker 命令行工具等 task-cli接着,安装 Cobra 库:go get -u github.com/spf13/cobra第二步:初始化 Cobra 命令在项目根目录下创建 main.go 文件并添加以下代码:package ", Args: cobra.MinimumNArgs(1), Run: func(cmd *cobra.Command, args []string) { taskName
0x00 前言 @0r3ak 师傅向我推荐了一款代码审计工具Cobra(wufeifei/cobra),该工具基于Python开发,可以针对多种语言的源代码安全性评估。 关于 Cobra 的安装,与基本的使用方法在 Cobra 的文档中说的很详细了。 第82行,调用cli.start()函数,开始扫描,步入到该函数的具体实现代码(\cobra-master\cobra\cli.py 第41-122行)。 其中对文件夹下的内容进行遍历和统计的功能,主要由\cobra-master\cobra\pickup.py中的Directory()类实现。 () —->\cobra\cli.py line 91 scan() ——>\cobra\engine.py line 160 scan_cve() ——–>\cobra\cve.py
Cobra 简介 Cobra 是一个流行的 Go 语言库,用于创建强大且灵活的命令行应用程序。它由 spf13 开发,设计用于与 Go 生态系统中的其他流行库(如 Viper 配置库)无缝集成。 Docker:Docker CLI 也是基于 Cobra 开发的。 Hugo:这个流行的静态网站生成器使用 Cobra 来构建其命令行界面。 下面让我们一起进入正题,Cobra 上手教程。 Cobra 上手教程 第一步我们要创建一个项目,然后为项目安装 Cobra : go get -u github.com/spf13/cobra@latest 我们在 main.go 中添加如下代码来创建第一个命令行工具 不得不说,Cobra 兼容性还不错。
「GO」cobra 是如何实现命令树的 原文链接: https://typonotes.com/posts/2023/02/14/devopscamp-cobra-05-subcommand/ 勘误说明 这是一篇勘误文章, 上一篇文章中说了 cobra 命令树的实现, 但是发现一点错误。 DevOpsCamp 第 2 期作业: 《cobra - 05 子命令》 说下 cobra 命令树和 gin 路由树的实现差异 由于我的微信公众号没有评论功能, 没办法通知。悲剧, T.T。 cobra 是如何实现命令树的 如果你用过 gin 的路由树的话, 可能会对 cobra 的命令树实现更为深刻。 删除多余的结构, cobra 节点 就是下面这样的。 总体来说, cobra 命令节点 独立而又统一