k8s学习之cobra命令库学习

从k8s当中学习go cli脚手架开发利器-cobra 在Run()在设定了一系列的参数信息后,创建了cmd对象,并执行cmd对象的Execute(),这里的cmd对象就是一个cobra命令对象,而Execute是cobra提供执行命令的方法,cobra内部使用pflag库,通过设置 pflag 属性,可以对 cobra 的运行产生作用。cobra对象如何生成的,是我们需要关心的,**NewKubeadmCommand(os.Stdin, os.Stdout, os.Stderr)**的实现在cmd/kubeadm/app/cmd/cmd.go。 阅读详情

1.前言

打开k8s代码的时候,我发现基本上那几个核心服务都是使用cobra库作为命令行处理的能力。因此,为了对代码之后的代码学习的有比较深入的理解,因此先基于这个库写个demo,加深对这个库的一些理解吧

2.cobra库的基本简介

Github:GitHub - spf13/cobra: A Commander for modern Go CLI interactions 在这里了,Cobra是一个用Go语言实现的命令行工具。并且现在正在被很多项目使用,例如:Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速的创建命令行工具,特别适合写 测试脚本,各种服务的 Admin CLI等。

因为命令行参数,golang本身自带了"flag" 库,使用flag库呢

flag.Parse()  
​
args := flag.Args()

解析完之后,需要每个命令去判断,十分的麻烦。

但是我们在使用到时候,需要针对命令行进行各种解析判断,但是有了这个库,我们就可以减少这段冗余的代码了

3 cobra的使用demo

话不多说,我们直接给出怎么用这个项目。我的环境是在macos上。

3.1 首先下载依赖库

命令行执行

go get -u github.com/spf13/cobra@latest
3.2 命令行CLI工具
$ go install github.com/spf13/cobra-cli@latest

因为我本身我的golang代码路径已经建好了bin目录,因此,执行完该命令后,如下

我们看到了cobra-cli的可执行文件。

这边是我们可以在命令用这个东西,进行初始化了。集体步骤如下

xxx@MBP src % mkdir greet
xxx@MBP src % cd greet
xxx@MBP test % ls
xxx@MBP greet % cobra-cli init
Error: Please run `go mod init <MODNAME>` before `cobra-cli init`
xxx@MBP greet % go mod init greet
go: creating new go.mod: module greet
xxx@MBP greet % ls
go.mod
xxx@MBP greet % cobra-cli init
Your Cobra application is ready at
/Users/XXX/workspace/golang/src/greet
xxx@MBP greet % ls
LICENSE cmd go.mod  go.sum  main.go
xxx@MBP greet %

第一步先建好一个test目录,然后执行go mod init test,然后再执行cobra-cli init的命令行,就会生成了脚手架文件了。

目录中会产生一下文件:

main.go cmd LICENSE go.mod go.sum
├── LICENSE
├── cmd
│   └── root.go
└── main.go
    go.mod 
    go.sum

3.3 编写代码文件

刚刚生成的文件,因为没有加具体的命令选项,可能用处不大,因此我们继续执行,添加一个命令字

cobra-cli add [command]

这样,他就会又生成了一个文件。

比如执行

cobra-cli add greet

// Package cmd /*
package cmd
​
import (
  "fmt"
​
  "github.com/spf13/cobra"
)
​
// greetCmd represents the greet command
var greetCmd = &cobra.Command{
  Use:   "greet",
  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) {
    // 这段代码是我加的。
    if len(args) < 1 {
      cmd.Help()
      return
    }
    name := args[0]
    fmt.Println("greet called:", name)
  },
}
​
func init() {
  rootCmd.AddCommand(greetCmd)
​
  // Here you will define your flags and configuration settings.
​
  // Cobra supports Persistent Flags which will work for this command
  // and all subcommands, e.g.:
  // greetCmd.PersistentFlags().String("foo", "", "A help for foo")
​
  // Cobra supports local flags which will only run when this command
  // is called directly, e.g.:
  greetCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}
​

因此,我们可以看到,新增了greet的命令。

然后我们编译一下,生成目标文件,后我们执行以下

./greet

A longer description that spans multiple lines and likely contains
examples and usage of using your application. 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.
​
Usage:
  greet [command]
​
Available Commands:
  completion  Generate the autocompletion script for the specified shell
  greet       A brief description of your command
  help        Help about any command
  mockMsg     A brief description of your command
​
Flags:
  -h, --help     help for greet
  -t, --toggle   Help message for toggle
​
Use "greet [command] --help" for more information about a command.
​
 

以上我们通过返回的内容,可以看出多了一个gree的子命令。

并且可以加flag,比如-h

上边的Run 就可以放我们想要处理的业务逻辑了。

如果我们想增加一些flag 值,只需要能够在run里边添加如下代码即可

g, _ := cmd.Flags().GetInt32("goroutine")
 p, _ := cmd.Flags().GetInt32("packet")
 fmt.Println("mockmsg called,flags:g=", g, ",p=", p, ",args:", args)

比如我们实现如下:

Run: func(cmd *cobra.Command, args []string) {
    if len(args) < 1 {
      cmd.Help()
      return
    }
    name := args[0]
    fmt.Println("greet called:", name)
​
    g, _ := cmd.Flags().GetInt32("goroutine")
    p, _ := cmd.Flags().GetInt32("packet")
    fmt.Println("mockmsg called,flags:g=", g, ",p=", p, ",args:", args)
  },

这样,问可以这样使用了

./greet greet xx -p 10 -g 100
greet called: xx
greetCmd called,flags:g= 100 ,p= 10 ,args: [xx]
​

4 K8s中如何使用

我主要是看了kubctl模块的代码,我发现这个模块对cmd这块又进行了更丰富的封装,用以支持更加复杂的场景。

其中我们从kubectl的main开始

一个入口方法

// NewDefaultKubectlCommand creates the `kubectl` command with default arguments
func NewDefaultKubectlCommand() *cobra.Command {
  ioStreams := genericiooptions.IOStreams{In: os.Stdin, Out: os.Stdout, ErrOut: os.Stderr}
  return NewDefaultKubectlCommandWithArgs(KubectlOptions{
    PluginHandler: NewDefaultPluginHandler(plugin.ValidPluginFilenamePrefixes),
    Arguments:     os.Args,
    ConfigFlags:   defaultConfigFlags().WithWarningPrinter(ioStreams),
    IOStreams:     ioStreams,
  })
}

因为kubectl是可以对文件,以及flag进行处理使用的,因此,需要针对这种情况各种设置参数,我们发现已经充分利用了cmd结构体的内各个字段

其中 这两个方法是核心方法,基本上是初始化并赋值给command的结构了

// NewDefaultKubectlCommandWithArgs creates the `kubectl` command with arguments
func NewDefaultKubectlCommandWithArgs(o KubectlOptions) *cobra.Command {
  cmd := NewKubectlCommand(o)

其中在NewKubectlCommand 就是用来new cmd实例的。

func NewKubectlCommand(o KubectlOptions) *cobra.Command {
  warningHandler := rest.NewWarningWriter(o.IOStreams.ErrOut, rest.WarningWriterOptions{Deduplicate: true, Color: term.AllowsColorOutput(o.IOStreams.ErrOut)})
  warningsAsErrors := false
  // Parent command to which all subcommands are added.
  cmds := &cobra.Command{
    Use:   "kubectl",

这个就是 我么看到的kubectl的命令的使用地方了,因为本文主要是讲command的使用,因此k8s的其他get命令等先不赘述,下一篇在讲

下面是具体贴一下Command具体的相关的字段了意思了

以下是对 `Command` 结构体中每个字段的详细解释:
​
1. `Use`:这是一个字符串,用于描述命令的基本使用方式。它规定了命令所需的参数和可选参数的格式,为用户提供了简洁明了的使用指导。
    - 例如:`"add [-F file | -D dir]... [-f format] profile"` 表示 `add` 命令可以有可选的 `-F` 和 `-D` 参数,其中 `-F` 后跟一个文件,`-D` 后跟一个目录,这两个参数是互斥的,并且可以多次出现,还有一个可选的 `-f` 参数后跟格式信息,最后需要一个 `profile` 参数。
​
2. `Aliases`:一个字符串切片,存储了该命令的别名。这使得用户可以通过不同的名称来调用同一个命令,增加了命令使用的灵活性。
    - 比如:`["add_item", "insert"]` 是 `add` 命令的别名。
​
3. `SuggestFor`:也是一个字符串切片,其中包含了此命令可能被建议替代的其他命令名称。这有助于在用户输入类似但不完全准确的命令时提供相关的建议。
​
4. `Short`:一个简短的字符串,用于在帮助输出中提供命令的简短描述,让用户快速了解命令的主要功能。
    - 例如:"添加新的项目"
​
5. `GroupID`:指定该子命令在其父命令的“帮助”输出中所属的组标识,便于对命令进行分组展示和管理。
​
6. `Long`:详细的长字符串,在“帮助 <此命令>”输出中提供更全面和深入的命令描述,包括更多的功能细节、使用示例、注意事项等。
​
7. `Example`:包含命令使用的示例字符串,通过实际的例子帮助用户更好地理解如何正确使用该命令。
​
8. `ValidArgs`:一个字符串切片,列出了在外壳自动补全中所有有效的非标志参数。
​
9. `ValidArgsFunction`:一个函数,动态地提供有效的非标志参数用于外壳自动补全,是一种更灵活的参数提供方式。
​
10. `Args`:定义了预期的参数的相关规则和处理方式。
​
11. `ArgAliases`:一个字符串切片,列出了有效参数的别名,这些别名不会在外壳自动补全中被提示,但手动输入时会被接受。
​
12. `BashCompletionFunction`:用于传统 Bash 自动补全生成器的自定义 Bash 函数,为特定的 Bash 环境提供定制的自动补全功能。
​
13. `Deprecated`:如果命令已被弃用,存储了使用该命令时将显示的提示信息,告知用户该命令不应再被使用。
​
14. `Annotations`:一个键值对映射,允许应用程序为命令添加自定义的标识、分组或特殊选项等元数据。
​
15. `Version`:存储命令的版本信息,用于版本控制和显示。
​
16. 各种 `Run` 函数:
    - `PersistentPreRun` 和 `PersistentPreRunE`:在命令执行前被调用,且子命令会继承并执行,用于进行一些持久的预处理操作。
    - `PreRun` 和 `PreRunE`:在命令执行前被调用,但子命令不会继承,用于特定于当前命令的预处理。
    - `Run` 和 `RunE`:实际的工作函数,实现命令的主要逻辑。
    - `PostRun` 和 `PostRunE`:在 `Run` 函数执行后被调用,用于进行后续的处理操作。
​
17. `commandgroups`:一个指针切片,指向子命令所属的组对象。
​
18. `args`:实际从标志解析得到的参数切片。
​
19. `flagErrorBuf`:一个字节缓冲区,用于存储来自 `pflag` 的错误消息。
​
20. `flags`:一个 `flag.FlagSet` 对象,包含了所有的标志。
​
21. `pflags`:存储持久的标志。
​
22. `lflags`:本地标志的缓存,用于优化 `LocalFlags` 函数调用。
​
23. `iflags`:继承的标志的缓存,用于优化相关函数调用。
​
24. `parentsPflags`:父命令的所有持久标志。
​
25. `globNormFunc`:一个全局的标准化函数,用于处理标志名称的标准化。
​
26. `usageFunc`:用户定义的使用函数,用于自定义命令的使用说明。
​
27. `usageTemplate`:用户定义的使用模板。
​
28. `flagErrorFunc`:用户定义的标志错误处理函数。
​
29. `helpTemplate`:用户定义的帮助模板。
​
30. `helpFunc`:用户定义的帮助函数。
​
31. `helpCommand`:具有“帮助”用途的命令,如果用户未定义,则使用默认的帮助命令。
​
32. `helpCommandGroupID`:帮助命令所属的组标识。
​
33. `completionCommandGroupID`:自动完成命令所属的组标识。
​
34. `versionTemplate`:用户定义的版本模板。
​
35. `errPrefix`:用户定义的错误消息前缀。
​
36. `inReader`:用户定义的输入读取器,替代标准输入。
​
37. `outWriter`:用户定义的输出写入器,替代标准输出。
​
38. `errWriter`:用户定义的错误输出写入器,替代标准错误输出。
​
39. `FParseErrWhitelist`:要忽略的标志解析错误的列表。
​
40. `CompletionOptions`:用于控制外壳自动完成的选项。
​
41. `commandsAreSorted`:一个布尔值,指示命令切片是否已排序。
​
42. `commandCalledAs`:一个结构体,记录命令被调用时的名称和是否被调用的状态。
​
43. `ctx`:上下文对象,用于传递和管理命令执行的上下文信息。
​
44. `commands`:一个指针切片,包含此命令支持的子命令。
​
45. `parent`:指向该命令的父命令的指针。
​
46. `Max lengths` 相关字段:记录命令相关字符串的最大长度,用于格式化和展示。
​
47. `TraverseChildren`:一个布尔值,决定是否在执行子命令之前解析所有父命令的标志。
​
48. `Hidden`:如果为真,该命令将在可用命令列表中隐藏,不向用户显示。
​
49. `SilenceErrors`:一个布尔值,用于控制是否静默处理错误。
​
50. `SilenceUsage`:一个布尔值,用于控制在发生错误时是否静默使用信息。
​
51. `DisableFlagParsing`:如果为真,将禁用标志解析,所有标志将作为参数传递给命令。
​
52. `DisableAutoGenTag`:如果为真,在生成文档时将禁用自动生成的标签。
​
53. `DisableFlagsInUseLine`:如果为真,将在使用行中禁用标志的添加。
​
54. `DisableSuggestions`:如果为真,将禁用基于编辑距离的建议功能。
​
55. `SuggestionsMinimumDistance`:定义显示建议的最小编辑距离,必须大于 0 。

5 总结

本篇文章主要是一步步的吧cobra这个库如何使用等进行了详细的解释,我们在使用这个库的时候,比较能够理解他工作的原理,然后再根据具体的k8s如何使用以及具体字段的使用来充分发挥cmd的能力和价值

kubernetes源码分析-基础命令库cobra cobra 是go语言创建命令很好的一个工具, cobra 是由 spf13 写的 golang 库, 地址: https://github.com/spf13/cobra k8s cmd是基于cobra的 例如 cmd/kube-controller-manager/app/controllermanager.go NewControllerManagerCommand定义如下: cmd := &cobra.Command{ Use: "kube-controller-manager", 阅读详情

相关推荐

go命令行库-cobra

Cobra 是一个用于创建强大的现代 CLI 应用程序的库。几乎包含了你所需要的所有元素。 Cobra 用于许多 Go 项目,例如Kubernetes、Docker、GitHub CLI、Hugo等等。

zy010101博客 1702

Golang Cobra Command详解(三)

基本上所有命令相关的功能都定义在Command结构体中 type Command struct { // Use 表示用一句话来描述这个命令作用,这段话的第一个单词会被作为这个命令的名称 // 这个设置在子命令中生效,对于根命令则没有意义 Use string // Alias 可以用来给子命令定义别名,除了使用 Use 中的第一个单词作为子命令外,你还可以使用这个 Alias // 里面定义的任何一个名称作为子命令名称 Aliases []string // SuggestFor..

Meyerheim1的博客 4032

Transformer在量化交易中的应用:从时序预测到策略生成

Transformer模型凭借其强大的自注意力机制,在自然语言处理领域取得了革命性突破。其核心原理是通过并行计算和动态权重分配,有效捕捉序列数据中的长距离依赖关系。这一特性使其在金融时间序列分析中展现出巨大技术价值,能够处理市场数据中的复杂非线性模式和长期关联。在量化交易场景下,Transformer可将价格、成交量等连续数据通过离散化分桶处理,转化为类似文本的序列,进而进行预测或直接生成交易信号。本文以QuantGPT项目为例,探讨了如何将这一前沿AI架构迁移应用于金融领域,涵盖了从数据作为“语言”的编码

weixin_26757949的博客 363

Go语言命令行工具cobra

Go语言命令行工具cobra

YIYIYI 5158

SAR ADC设计——SAR Logic原理

SAR ADC设计——SAR Logic原理 参考:集成电路设计实践 SAR ADC 清华大学 李福乐 文章目录SAR ADC设计——SAR Logic原理一. Overview二. TSPC(True Single Phase Clock)三. SC_Gen(Sequential Control Generator)四. LATCH_Dynamic五. 时序控制逻辑总结六. SW产生七. DO产生八. GT产生九. SAR Logic模块总结 一. Overview 输入:CKC,CompB,SAMPL

夏风喃喃的博客 1万+

电流镜结构实战:从零理解MOS管偏置电路设计(附吴金课程补充)

本文深入解析电流镜结构在MOS管偏置电路设计中的关键作用,从基本原理到实战应用全面覆盖。通过分析偏置电路的核心原理、破解设计难题的实用技巧,以及进阶优化策略,帮助工程师掌握这一模拟电路设计的核心技术。特别适合需要理解电流镜结构和基准电路设计的读者参考学习。

ujm5678901的博客 256

golang cobra命令行工具介绍

cron,是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业。 在Ubuntu server 下,cron是被默认安装并启动的;如果没有启动,自行设置并启动(chkconfigsysv-rc-conf)。通过其配置文件 /etc/crontab 可以看到以下内容:ununtu 通过调用 run-parts 命令,定时运行四个目录下的所有脚本。 1)/etc/cron.hourly,目录下的脚本会每个小时让执行一次,在每小时的17分钟时运行; 2)/etc/cron.daily,目录下的脚本会每

学亮编程手记 1027

AI硬件加速:CPU vs GPU性能对比

AI硬件加速:CPU vs GPU性能对比 关键词:人工智能、硬件加速、CPU、GPU、性能对比、硬件架构、并行计算、优化策略、项目实战 摘要: 本文将深入探讨AI

AI天才研究院 1913

Cobra命令行框架及使用

Cobra命令行框架及使用cobra 快速教程Cobra简介Cobra安装Cobra项目创建修改作者信息命令的基本结构命令编译与运行为命令添加一个子命令为命令添加一个选项选项的接收与处理选项的常见类型选项的帮助信息课程总结Cobra框架源码分析命令行基础概念cobra子命令cobra中command常用属性cobra的运行流程Cobra源码实现相关信息最后实战目录架构各文件代码 cobra 快速教程 Cobra简介 一个用于生成命令行工具的框架(本身也是个命令行工具) 简单易用 Kubernetes、Et

新广州人的网络安全 2721

液态神经网络(LNN):打破AI“静态快照”的连续动力学革命---AI大模型系统从零开始0029

MIT研究团队受秀丽隐杆线虫神经系统的启发,开发出革命性的液态神经网络(LNN)。该技术通过连续微分方程建模神经元动态,实现输入响应速度的自适应调节,解决了传统AI模型静态化、高能耗和低解释性的痛点。LNN具有三大突破性优势:仅需少量神经元(如20个)即可完成复杂任务;能处理非均匀时序数据;在自动驾驶、医疗监测等领域展现出卓越的适应性和鲁棒性。这项将生物智能与数学建模完美融合的技术,有望成为下一代AI的核心架构,目前已在无人机导航等场景验证了其高效性,被预测为2026年最具潜力的AI突破方向。

添柴程序猿的专栏 370

YOLO11涨点优化:注意力魔改 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测

多尺度卷积注意力(MSCA),有效地提取上下文信息,新颖度高,创新十足。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 6310

零基础入门Cobra---kubernetes源码学习必备

Cobra 是用 go 语言实现的用于创建 CLI 应用程序和命令文件的工具。许多 Go 的项目都是使用 Cobra 构建的,包括:kubernetesetcdhugodocker……本篇...

1721

两万字硬核指南!Python爬虫requests库从入门到精通:新手也能搞定所有爬取场景(附实战案例+避坑大全)

请求头是客户端发送给服务器的额外信息,比如User-Agent(浏览器类型)、Referer(来源页面)、Cookie(登录凭证)、(编码方式)等。Cookie是服务器存储在客户端的小型文本文件,包含用户的登录凭证、偏好设置等信息。浏览器会在每次请求时自动携带Cookie,服务器通过Cookie识别用户身份。代理IP是一个中间服务器,你的请求先发送到代理IP,再由代理IP发送到目标网站,目标网站只能看到代理IP的地址,看不到你的真实IP。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1496

k8s源码分析 pdf_k8s源码分析之Cobra

一、Cobra简介cobra:既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序.官网地址: https://github.com/spf13/cobraCobra主要提供的功能* 简易的子命令行模式,如 app server, app fetch等等* 完全兼容posix命令行模式* 嵌套子命令subcommand* 支持全局,局部,串...

weixin_39963523的博客 366

Android 13.0 app进程保活白名单功能实现

在13.0的系统rom产品开发中,在某些重要的app即使进入后台,产品需求要求也不想被系统杀掉进程,需要app长时间保活,就是app进程保活白名单功能的实现, 所以需要在系统杀进程的时候不杀掉白名单的进程,接下来就看怎么样来实现这些功能

安卓兼职framework和app工程师的博客 3141

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

用 Cobra 打造现代化命令行应用:Kubernetes 生态中的 Cobra CLI 实战解析

Cobra 是一个用于构建现代化、功能强大 CLI(命令行)应用的 Go 库,本仓库在 `vendor/github.com/spf13/cobra/` 中随 Kubernetes 一起发版(当前内嵌版本为 v1.10.2),并深度支撑了 kubectl、kubeadm 等 Kubernetes 核心命令行工具的实现。本文将围绕 Cobra 官方 README 的核心内容,结合 Kubernete

gitblog_01007的博客 996

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

go Cobra命令行工具总结

简介 Cobra是一个用Go语言实现的命令行工具。并且现在正在被很多项目使用,例如:Kubernetes,、Hugo和Github CLI等。通过使用Cobra,不仅可以快速的创建命令行界面,也可以快速开发基于Cobra的应用程序。 基本概念 Cobra由三部分组成:命令(Commands )、参数(Args)和标志(Flags)。 命令(Commands):代表行为。命令是程序的中心点,程序的每个功能都应该可以通过命令进行交互。一个命令可以有子命令。 参数(Args):命令的参数 标志(Flags):修饰

qq_31639829的博客 3002

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

基于cobra开发的k8s命令行管理工具k8s-manager

k8s-manager管理工具,简便Kubectl的重复操作

Drosssse的博客 1058

Cobra + Client-go实现K8s 自定义插件开发

一 背景 在我们使用kubectl查看k8s资源的时候,想直接查看对应资源的容器名称和镜像名称,目前kubectl还不支持该选型,需要我们describe然后来查看,对于集群自己比较多,不是很方便,因此萌生了自己开发kubectl 插件来实现该功能。 二 相关技术 2.1 Cobra Cobra是一个命令行程序库,其是一个用来编写命令行的神器,提供了一个脚手架,用于快速生成基于Cobra应用程序框架。我们可以利用Cobra快速的去开发出我们想要的命令行工具,非常的方便快捷。 详细可参考:Golan

分享身边生活经验blog 1164

Cobra简介

Cobra既是一个创建强大的现代CLI应用程序的库,也是一个生成应用程序和命令文件的程序。 Cobra被用于许多Go项目,如Kubernetes、Hugo和Github CLI等等。这个列表包含了一个更广泛的使用Cobra的项目列表。 目录 概述 概念 指令 旗帜 安装 入门 使用Cobra生成器 使用Cobra库 使用Flags 位置和自定义参数 例子 帮助命令 使用说明 运行前和运行后挂钩 发生 "未知命令 "时的建议 为您的命令生成文档 生成外壳完成 贡献 许可证 使用Cobra库 .

郭贰小姐的博客 1213

K8S 源码探秘 之 命令行解析工具 cobra

一、引言         最近开始研读 Kubernetes 源码,希望能借此更加深入地理解其运行机理!         由于 Kubernetes 代码量很庞大,我将分模块分组件地去分析和理解,并把自己的发现共享出来。         第一篇博客,先从简单的命令行解析工具 cobra 开始。 二、源码解析         Kubernetes 中的组件(如 kubeadm、kubect...

shida's blog 2115

项目一:golang+kubernetes实现白屏化操作k8s资源

本项目是一个简单易用的K8S管理平台,可以实现k8s资源的图形化界面管理,采用golang语言编写,使用了gin+gorm框架。

a1369760658的博客 1500

Go 库学习:Cobra

https://github.com/spf13/cobra Kubernetes、Docker、etcd 等很多著名的项目使用 Cobra 构建其命令行接口。 概述 Cobra 库提供简单的接口来创建类似 git 和 go tools 的强大的现代命令行接口。 主要功能: 基于子命令的 CLI,如 app server、app fetch 完全符合 POSIX 标准的参数标志(长短标志都支持)...

qq_35753140的博客 453

Cobra:一种基于golang的命令行开发框架(一)

介绍cobra框架的用法,帮助快速上手命令行开发

weixin_38757398的博客 2245

cobra golang好用的CLI工具

Cobra 每个好的开源项目都会有很多好用的开源库的诞生,之前学openstack的时候就对openstack的oslo系列工具组用的非常多,现在学习k8s后发现同样在go下也有很多类似的开源库,比如Cobra 就是一个用来创建命令行的 golang 库,同时也是一个用于生成应用和命令行文件的程序, 包括docker,k8s 都用的类似方式去实现,用于实现CLI非常好用,我的理解他有点类似ope...

zyxpaomian的博客 1188

Cobra 文档生成实战:用 spf13/cobra/doc 包为命令树自动生成 ReST 文档

本文以 Cobra 仓库的 [ReST 文档生成指南](https://link.gitcode.com/i/c32dd4d38ddb502982b4c51a272a6f27) 为核心,讲解如何用 `doc` 包中的 `GenReST`、`GenReSTTree` 及其 Custom 变体,把 `cobra.Command` 自动渲染为 reStructuredText(ReST)文档:既能对整个

gitblog_00203的博客 836
上一篇: macos下搭建minikube dashboard的启动
ctreewang
博客等级 码龄16年 1608粉丝 276原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值