跳到主要内容

Cobra 快速入门

Cobra 是 一个 go 语言的命令行工具库, 它可通过简单的命令生成命令行文件, 只需简单的配置即可构建命令行应用. Cobra 有在许多优秀的 Go 项目中使用, 例如 Kubernetes, Hugo, GitHub CLI 等. 下面我将介绍如何通过 Cobra 构建一个简单的命令行应用

官方链接

预备知识

快速开始

新建项目

go mod init cobra-demo

安装 Cobra

go get -u github.com/spf13/cobra/cobra

初始化命令

cobra init --pkg-name cobra-demo
注意

--pkg-name 为 go mod 项目名

新建子命令

cobra add server

此时文件结构如下

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

编译并运行程序

go build -o cobra-demo.exe main.go
$ cobra-demo server
server called

添加作者信息和选择软件许可证

我们注意到生成的命令行文件的头注释带有作者和许可证信息, 默认内容如下, 可以通过命令行和配置文件两种方式修改内容

cmd/root.go
/*
Copyright © 2021 NAME HERE <EMAIL ADDRESS>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

通过命令行

cobra init --pkg-name cobra-demo -a "lintech1024 <lintech1024@hotmail.com>" -l mit
cobra add server -a "lintech1024 <lintech1024@hotmail.com>" -l mit

通过配置文件

默认配置文件路径为 $HOME/.cobra.yaml, 编辑该文件添加如下内容

$HOME/.cobra.yaml
author: lintech1024 <lintech1024@hotmail.com>
license: none

也可通过命令行参数 --config 指定配置文件

cobra add fetch --config .cobra.yaml
提示

不指定 LICENSE 可设置为 none