cobra库:基于cobra-cli命令行生成项目结构

2023-11-16

cobra库:基于cobra-cli命令行生成项目结构

一、新建go项目

在F盘创建文件夹cobra-started

1、使用mod对go项目进行管理

go mod init cobra-started

二、使用cobra-cli代码生成

参考:https://github.com/spf13/cobra-cli/blob/main/README.md

1、设置 GOPROXY代理

PS F:\k8s\cobra-started> $env:GOPROXY = "https://proxy.golang.com.cn,direct" 

2、下载cobra-cli@latest

PS F:\k8s\cobra-started> go get  github.com/spf13/cobra-cli@latest                                                      go: downloading github.com/spf13/cobra-cli v1.3.0
go: downloading github.com/spf13/viper v1.10.1
go: downloading github.com/spf13/cobra v1.3.0
go: downloading github.com/mitchellh/mapstructure v1.4.3
go: downloading github.com/spf13/cast v1.4.1
go: downloading github.com/fsnotify/fsnotify v1.5.1
go: downloading github.com/magiconair/properties v1.8.5
go: downloading github.com/spf13/jwalterweatherman v1.1.0
go: downloading github.com/subosito/gotenv v1.2.0
go: downloading gopkg.in/ini.v1 v1.66.2
go: downloading github.com/hashicorp/hcl v1.0.0
go: downloading github.com/pelletier/go-toml v1.9.4
go: downloading golang.org/x/sys v0.0.0-20211210111614-af8b64212486
go get: installing executables with 'go get' in module mode is deprecated.
        To adjust and download dependencies of the current module, use 'go get -d'.
        To install using requirements of the current module, use 'go install'.
        To install ignoring the current module, use 'go install' with a version,
        like 'go install example.com/cmd@latest'.
        For more information, see https://golang.org/doc/go-get-install-deprecation
        or run 'go help get' or 'go help install'.
go get: added github.com/fsnotify/fsnotify v1.5.1
go get: added github.com/hashicorp/hcl v1.0.0
go get: added github.com/inconshreveable/mousetrap v1.0.0
go get: added github.com/magiconair/properties v1.8.5
go get: added github.com/mitchellh/mapstructure v1.4.3
go get: added github.com/pelletier/go-toml v1.9.4
go get: added github.com/spf13/afero v1.6.0
go get: added github.com/spf13/cast v1.4.1
go get: added github.com/spf13/cobra v1.3.0
go get: added github.com/spf13/cobra-cli v1.3.0
go get: added github.com/spf13/jwalterweatherman v1.1.0
go get: added github.com/spf13/pflag v1.0.5
go get: added github.com/spf13/viper v1.10.1
go get: added github.com/subosito/gotenv v1.2.0
go get: added golang.org/x/sys v0.0.0-20211210111614-af8b64212486
go get: added golang.org/x/text v0.3.7
go get: added gopkg.in/ini.v1 v1.66.2
go get: added gopkg.in/yaml.v2 v2.4.0

3、从$GOPATH/bin目录下把cobra-cli.exe命令拷贝到F:\k8s\cobra-started目录下

4、执行 .\cobra-cli init生成代码结构

PS F:\k8s\cobra-started> .\cobra-cli init                                                                               Your Cobra application is ready at
F:\k8s\cobra-started

5、查看生成的代码结构

PS F:\k8s\cobra-started> ls                                                                                             

    目录: F:\k8s\cobra-started


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         2022/4/2      9:17                cmd
-a----         2022/4/2      9:14        8210944 cobra-cli.exe
-a----         2022/4/2      9:17            891 go.mod
-a----         2022/4/2      9:17          77739 go.sum
-a----         2022/4/2      9:17              0 LICENSE
-a----         2022/4/2      9:17            124 main.go

6、生成的文件
main.go

package main

import "cobra-started/cmd"

func main() {
	cmd.Execute()
}

cmd/root.go

package cmd

import (
	"os"

	"github.com/spf13/cobra"
)



// rootCmd represents the base command when called without any subcommands
var rootCmd = &cobra.Command{
	Use:   "cobra-started",
	Short: "A brief description of your application",
	Long: `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.`,
	// Uncomment the following line if your bare application
	// has an action associated with it:
	// Run: func(cmd *cobra.Command, args []string) { },
}

// Execute adds all child commands to the root command and sets flags appropriately.
// This is called by main.main(). It only needs to happen once to the rootCmd.
func Execute() {
	err := rootCmd.Execute()
	if err != nil {
		os.Exit(1)
	}
}

func init() {
	// Here you will define your flags and configuration settings.
	// Cobra supports persistent flags, which, if defined here,
	// will be global for your application.

	// rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra-started.yaml)")

	// Cobra also supports local flags, which will only run
	// when this action is called directly.
	rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cobra库:基于cobra-cli命令行生成项目结构 的相关文章

  • 如何在 Visual Studio Code 中使用 Delve 调试器进行远程调试

    我已经问过了 得到了很好的答复answer https stackoverflow com questions 39058823 how to use delve debugger in visual studio code用于使用 del
  • 我想在后端验证来自 golang 前端的时区

    前端在注册期间发送时区以及其他用户详细信息 我需要在时区上放置一个验证器来进行 api 测试 时区数据的格式为 GMT 10 00 Hawaii GMT 08 00 Pacific Time US amp Canada 我所做的是定义数组中
  • 入口和 SSL 直通

    我最近一直在使用 nginxdemo nginx ingress 控制器 据我了解 该控制器无法执行 SSL 直通 我的意思是 将客户端证书一直传递到后端服务进行身份验证 因此我一直通过标头传递客户端主题 DN 最终 我更喜欢 SSL 直通
  • Kubernetes Web UI(仪表板)缺少图表

    我已经使用 Kubeadm v1 6 安装了 Docker v1 13 和 Kubernetes 然后我安装了 Web UI 仪表板 我可以访问它 但缺少 CPU 内存使用图 为什么会发生这种情况 对我来说 安装后使用图就起作用了heaps
  • 为什么结构中“[0]byte”的位置很重要?

    0 byte在golang中不应该占用任何内存空间 但这两个结构体的大小不同 type bar2 struct A int 0 byte type bar3 struct 0 byte A int 那么为什么这个位置 0 byte这里重要吗
  • Kubernetes Ingress 在 nginx 反向代理后面运行

    我已经在可以从互联网访问的服务器上安装了 minikube 我创建了一个可用的 kubernetes 服务 gt kubectl get service myservice NAME CLUSTER IP EXTERNAL IP PORT
  • 如何在运行“go test”时排除或跳过特定目录[重复]

    这个问题在这里已经有答案了 go test go list grep v vendor coverprofile testCoverage txt 我正在使用上述命令来测试文件 但有 1 个名为 Store 的文件夹我想从测试中排除 怎样才
  • 有没有办法在 VSCode 中保存时运行 go 测试,并将其输出到终端?

    现在我有几个项目在VSCode中运行 运行起来相当繁琐go test每次我编写新代码时 我宁愿立即看看我是否破坏了某些东西 我知道在 Javascript 中我可以在每次保存文件时运行测试 并将输出发送到终端 现在我正在使用 保存时运行 h
  • 展平嵌套结构会导致切片的切片

    所以我有一个像这样的结构 type Bus struct Number string Name string DirectStations Station Station is another struct ReverseStations
  • k8s书签解决什么问题?

    我正在尝试做什么 我正在尝试进行部署并监视 k8s 事件 直到部署准备好使用k8s节点API 手表 https github com kubernetes client javascript blob master examples typ
  • Golang 正则表达式命名组和子匹配

    我正在尝试匹配正则表达式并获取匹配的捕获组名称 当正则表达式仅与字符串匹配一次时 这是有效的 但如果它与字符串匹配多次 SubexpNames不返回重复的名称 这是一个例子 package main import fmt regexp fu
  • 如何在 Go 中将环境变量传递给测试用例

    在为 Go 编写测试用例时 传递需要提供给测试的环境变量的标准方法是什么 例如 我们不想在测试用例的源代码中嵌入密码 处理这个问题最标准的方法是什么 我们让测试用例寻找配置文件吗 还有别的事吗 看来我偶然发现了答案 将其添加到测试用例中可以
  • 让我们加密证书颁发

    我正在尝试获取 Let s Encrypt 颁发的证书 已经过去了 3 个半小时 我不小心最初将我的 SecretName 设置为 echo tls 然后将其切换到我想使用的正确的 pandaist tls 我目前有这个 kubectl g
  • 如何将 SQLite 数据库捆绑到 Go 二进制文件中?

    我尝试使用 go bindata 和 packr 但这些包没有显示如何将 SQLite 数据库文件打包到二进制文件中 我不需要以任何方式更新数据库 我只想在启动时从中读取数据 如何将 SQLite 数据库文件嵌入到 Go 二进制文件中 SQ
  • GOMAXPROCS 默认值是多少?

    不设置同名环境变量时是否保证GOMAXPROCS设置为1 此代码显示的值 package main import runtime fmt func getGOMAXPROCS int return runtime GOMAXPROCS 0
  • 多个值文件中包含多个列表的 Helm 图表

    我有一个包含以下内容的values yaml abc env name name01 value value01 name name02 value value02 我有另一个值文件values dev yaml 我在使用 f安装时添加它
  • 如何在golang中创建一个充满“000000...”数据的10MB文件?

    我打算在日志或磁盘队列等系统中使用 fdatasync 首先是在 ext4 等文件系统中创建一个带有 000000 的 10MB 文件 但我不知道如何正确地做到这一点 jnml fsc r630 src tmp SO 16797380 ls
  • 如何通过 kubectl 代理访问此 Kubernetes 服务?

    我想通过以下方式访问我的 Grafana Kubernetes 服务kubectl 代理服务器 https kubernetes io docs user guide kubectl v1 7 proxy 但由于某种原因 即使我可以使其适用
  • Kubernetes - 尝试部署时“安装卷失败”

    我部署了第一个容器 我得到了信息 deployment apps frontarena ads deployment created 但后来我看到我的容器创建陷入等待状态 然后我看到日志使用kubectl describe pod fron
  • 为什么 json.Unmarshal 返回映射而不是预期的结构?

    看看这个游乐场 http play golang org p dWku6SPqj5 http play golang org p dWku6SPqj5 基本上 我正在工作的图书馆收到了interface 作为参数 然后需要json Unma

随机推荐

  • C语言问题:0xC0000005: 写入位置 0xFFFFFFCC 时发生访问冲突。

    最近系统地开始学习C语言 在使用VS2019中用scanf s为一串字符串赋值时 发生了错误 错误如下 0x7837EF8C ucrtbased dll 处 位于 Project2 exe 中 引发的异常 0xC0000005 写入位置 0
  • typora+阿里云OSS+PicGO进行图床设置

    typora 阿里云OSS PicGO进行图床设置 文章目录 typora 阿里云OSS PicGO进行图床设置 前言 crystal ball 一 阿里云OSS设置 satellite 1 进入 阿里云OSS官网 https www al
  • 解决刷新tagsview首页消失问题和引入path报错问题

    我的tagsview功能是用nuoyi源码 如果你的代码有tagsview功能直接找这个文件 如果没有这个功能可以参考nuoyi源码 重点参考以下文件 或者参考 通俗易懂 vue实现tagsview标签导航栏切换菜单功能 详细注释 都能看的
  • 原型聚类&&密度聚类&&层次聚类

    1 原型聚类 原型聚类算法假设聚类结构可以通过一组原型刻画 通常算法先会对原型进行初始化 然后对原型进行迭代更新求解 不同的原型表示和不同的求解方式会产生不同的算法 下面主要介绍三种典型的原型聚类算法 k 均值 学习向量量化 和 高斯混合聚
  • mybatis和spring的集成方法

    集成mybatis和spring 需要的步骤 1 新建maven项目 2 加入maven依赖 在pom xml加依赖 1 加入spring依赖
  • vscode 无法远程调试 xdebug

    launch json version 0 2 0 configurations name Listen for XDebug type php request launch port 9001 该端口不要和php fpm端口相同 path
  • Redis Streams做股票行情MQ?

    redis作为内存数据库 大多时候都是作为缓存来使用 但是因为有pub sub的存在 所以也可以做MQ来使用 做为MQ 它有两个严重的问题 1 无法持久化 2 没有ack机制 redis pub sub是一个要即时消费的MQ 如果消费晚了
  • 序列式容器

    容器的概观与分类 常用的数据结构不外乎array 数组 list 链表 tree 树 stack 堆栈 queue 队列 hash table 散列表 set 集合 map 映射 等等 根据 数据再容器中的排列 特性 这些数据结构分为序列式
  • 华为云云耀云服务器L实例评测

    大家好 我是雄雄 欢迎关注微信公众号 雄雄的小课堂 目录 前言 效果图 购买云耀云服务器L实例 重置密码 放开端口 远程连接 安装云监控面板 进入监控面板 前言 有幸参与了华为云云耀云服务器L实例的评测名额 借着评测 顺便教给大家一项技能
  • 多视图聚类(multi-view clustering)简介

    多视图聚类 目前大概有以下几种 多视图k means聚类 多视图谱聚类 多视图图聚类 多视图子空间聚类 multi view subspace clustering 深度学习多视图聚类 deep multi view clustering
  • Vector迭代器实现

    实现数组的迭代器 实现内容 1 使用C 语言实现一个长度可扩充的数组结构 要求使用class实现 不能直接使用vector等现成的数据结构 2 要求实现为可以用于不同数据类型的数组结构 并不是说同一个对象需要存储多种类型的数据 建议使用te
  • 【满分】【华为OD机试真题2023 JAVA&JS】租车骑绿道

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 租车骑绿道 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 部门组织绿道骑行团建活动 租用公共双人自行车骑行 每辆自行车最多坐两人 做大载重M 给出部门每个人的体
  • 毕业设计 单片机与OpenMV机器视觉目标跟踪系统

    文章目录 0 前言 课题简介 设计框架 3 openMV实现舵机定位色块STM32 3 硬件设计 4 软件设计 4 1 硬件连接 4 2 软件代码 OpenMV端 4 3 软件代码 STM32端 4 4 利用PC端测试数据数据是否发送接收正
  • 《银行法律法规》一、经济金融基础知识——3、金融市场

    第三章 金融市场 第一节 金融市场概述 考点1 金融市场功能 概念 金融市场是指货币资金融通和金融工具交易的场所 金融市场的融资行为既包括以银行等金融机构为信用媒介的间接融资行为 也包括各类交易主体之间的直接融资行为 主体 是各类融资活动的
  • 运维企业实战Shell脚本合集+万能工具箱

    文章目录 系统维护篇 服务器日常巡检脚本 下线登录用户 企业级Linux日常自动抓取服务器巡检 登录 执行命令记录 备份脚本 终端对话 广播消息 批量查询IP归属地 手机号归属地信息 Linux开机后自动执行命令或脚本 一键自动格式化输出S
  • Anaconda中安装指定版本的tensorflow1.14.0/tensorflow-gpu1.14.0

    在运行github中一个项目时 由于其使用的tensorflow的版本是1 14 0 而我的版本是2 6 0的版本 因为版本过高导致运行失败 所以需要安装tensorflow1 14 0 首先在anaconda的命令行中输入如下命令 pip
  • 【Qt】【CMake】【CMakeLists.txt】-PROJECT_NAME 和 CMAKE_PROJECT_NAME 的区别

    Qt CMake CMakeLists txt PROJECT NAME 和 CMAKE PROJECT NAME 的区别 原帖 https stackoverflow com questions 38938315 difference b
  • 2000+Docker镜像,Kolla是如何管理的

    根据 DockerHub 上的数据 整个 Kolla 项目管理的 镜像有 2000 多个 这么多的镜像 是怎么定义 又是如何构建的呢 简介 我们一直在说的 Kolla 通常情况下泛指 包括了 Kolla 和 Kolla Ansible 两个
  • 二进制部署K8s

    一 环境需求 节点IP 节点名称 所需组件 192 168 248 11 k8s master docker etcd apiserver controller manager scheduler kube proxy flannel 19
  • cobra库:基于cobra-cli命令行生成项目结构

    cobra库 基于cobra cli命令行生成项目结构 一 新建go项目 在F盘创建文件夹cobra started 1 使用mod对go项目进行管理 go mod init cobra started 二 使用cobra cli代码生成