千家信息网

Kubernetes的CLI是使用哪些技术实现的

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍了Kubernetes的CLI是使用哪些技术实现的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。cobra介绍Cobr
千家信息网最后更新 2025年01月20日Kubernetes的CLI是使用哪些技术实现的

这篇文章主要介绍了Kubernetes的CLI是使用哪些技术实现的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

cobra介绍

Cobra是一个用于创建强大的现代CLI应用程序的库,也是一个用于生成应用程序和命令文件的程序。

Cobra用于许多Go项目,如Kubernetes、Hugo和Github CLI等。此列表包含了使用Cobra的更广泛的项目列表。

概述

Cobra是一个库,提供了一个简单的界面来创建功能强大的现代CLI界面,类似于git&go工具。

Cobra还是一个应用程序,它将生成您的应用程序框架以快速开发基于Cobra的应用程序。

眼镜蛇提供:

  • 简单易用的基于子的CLI:app server,app fetch等。

  • 完全兼容POSIX的标志(包括短版和长版)

  • 嵌套子命令

  • 全局,局部和级联标志

  • 易产生的应用程序和命令与cobra init appname&cobra add cmdname

  • 明智的建议(app srver……是您的意思app server吗?)

  • 自动生成命令和标志的帮助

  • 自动帮助标志识别-h,--help等等。

  • 为您的应用程序自动生成的外壳自动完成功能(bash,zsh,fish,powershell)

  • 自动为您的应用程序生成手册页

  • 命令别名,以便您可以更改内容而不会破坏它们

  • 定义自己的帮助,用法等的灵活性。

  • 可选与viper紧密集成,可用于12因子应用程序

概念

Cobra建立在命令,参数和标志的结构上。

命令代表动作,Args是事物,Flags是这些动作的修饰符。

最好的应用程序在使用时读起来就像句子,结果,用户直观地知道如何与之交互。

遵循的模式是 APPNAME VERB NOUN --ADJECTIVE. 或 APPNAME COMMAND ARG --FLAG

一些真实的例子可以更好地说明这一点。

在以下示例中,"服务器"是命令,"端口"是标志:

hugo server --port=1313

在此命令中,我们告诉Git克隆url的内容。

git clone URL --bare

安装

使用眼镜蛇很容易。首先,使用go get来安装该库的最新版本。此命令将安装cobra生成器可执行文件以及库及其依赖项:

go get -u github.com/spf13/cobra

Next, include Cobra in your application:

import "github.com/spf13/cobra"

入门

欢迎您提供自己的组织,但是通常基于Cobra的应用程序将遵循以下组织结构:

▾ appName/   ▾ cmd/       add.go       your.go       commands.go       here.go     main.go

在Cobra应用程序中,通常main.go文件非常裸露。它有一个目的:初始化眼镜蛇

package main  import (   "{pathToYourApp}/cmd" )  func main() {   cmd.Execute() }

Cobra使用

目录结构

image-20210218100009073

基命令

创建root.go文件,定义一个基命令

package cmd  import (  "github.com/spf13/cobra" )  var RootCmd = &cobra.Command{  Use: "gonne",  Run: func(cmd *cobra.Command, args []string) {   if len(args) == 0 {    cmd.Help()    return   }  }, }

在main函数中使用命令,就是这么简单

main.go文件

package main  import (  "demo-practice/cobra/cmd"  "fmt"  "os" )  func main() {  if err := cmd.RootCmd.Execute(); err != nil {   fmt.Println(err)   os.Exit(1)  } }

在windows环境下编译

go build -o gonne.exe

执行命令查看效果,输出内容如下所示

gonne.exe

  • Usage: gonne [flags] gonne [command]

  • Available Commands: help Help about any command version Print the version number of Gonne

  • Flags: -h, --help help for gonne

  • Use "gonne [command] --help" for more information about a command.

子命令

在基命令上增加子命令也相当简单,根本无需在基命令和main方法中写任何代码,只需新建一个go文件,多个子命令间也是相互独立的,多么优雅的代码,告别各种case

增加一个版本命令用法:

在cmd目录下增加一个version.go文件,内容如下

package cmd  import "github.com/spf13/cobra"  func init() {  RootCmd.AddCommand(versionCmd) }  var versionCmd = &cobra.Command{  Use:   "version",  Short: "Print the version number of Gonne",  Run: func(cmd *cobra.Command, args []string) {   println("gonne version is 0.0.1")  }, }

init()函数将此命令添加到基命令下

编译后执行 gonne version

gonne version is 0.0.1

感谢你能够认真阅读完这篇文章,希望小编分享的"Kubernetes的CLI是使用哪些技术实现的"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

命令 程序 应用程序 应用 文件 标志 生成 基命 内容 篇文章 帮助 眼镜 眼镜蛇 结构 技术 强大 下编 代码 函数 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广电网络安全播出工作部署 网络安全实现的基本目标 会计与数据库技术 威海戴尔服务器代理零售商 数据库模型主要有四种 软件开发企业介绍ppt 做小程序软件开发多少钱 软件开发培训上哪学 中国台湾文档软件开发价格 用io读取指定长度数据库 网络安全花样字体在线 河北专业网络技术服务资费 软件开发专业是什么单招学校 网络安全进校园要求竖版 数据库中时间改为日期 河南星空网络技术有限公司 怎样去除数据库表里的空格 魔兽数据库雪靴野兔 关系型数据库需要的原则 阿里云有移动的服务器吗 软件开发设计工具都有哪些 兴化威力网络技术厂家价格 温州龙湾区软件开发首选 信息科技部软件开发岗 西安软件开发类院校 网络安全怎么远离不良信息 网络安全进校园要求竖版 酷容网络技术有限公司 什么是网络安全的中心环节 网络安全标语大学生
0