Go语言命令行工具包corba的使用

Go语言命令行工具包corba的使用

简介:

cobra是一个让你轻松构建命令行程序的包,具有很多特性和功能。如:

  • 简易的子命令行模式,如 app server, app fetch等等
  • 完全兼容posix命令行模式
  • 嵌套子命令subcommand
  • 支持全局,局部,串联flags
  • 使用Cobra很容易的生成应用程序和命令,使用cobra create appname和cobra add cmdname
  • 如果命令输入错误,将提供智能建议,如 app srver,将提示srver没有,是否是app server
  • 自动生成commands和flags的帮助信息
  • 自动生成详细的help信息,如app help
  • 自动识别-h,–help帮助flag
  • 自动生成应用程序在bash下命令自动完成功能
  • 自动生成应用程序的man手册
  • 命令行别名
  • 自定义help和usage信息
  • 可选的紧密集成的viper apps
  • github地址:https://github.com/spf13/cobra

安装:

go get -v github.com/spf13/cobra/cobra
go install github.com/spf13/cobra/cobra

简单使用:

这里仅介绍Flags、Help和Usage的用法。你可以用cobra初始化你的项目,当然也可以自己组织项目。

用cobra初始化项目

corbra init 项目名称
cobra add 包名

一个简单的项目演示,这个项目只有一个文件-main.go,包含在test文件夹里。可以运行go build构建项目,可执行文件为test。cobra的基本用法请看代码。

// Package main provides ...
package main

import (
	"fmt"
	"github.com/spf13/cobra"
	"time"
)

var (
	name     string
	datetime string
	
    //Use指Usage,Run是要运行的函数代码
    //main函数只有很简单的代码,其他代码在run函数执行
	rootCmd = &cobra.Command{
		Use: "test",
		Run: run,
	}
)

func init() {

	/**
	* @brief 在init()函数里设置Flag
	*
	* @param name 变量,存储Flag->author的值
	* @param "author" Flag
	* @param "yzz" author 的默认值
	* @param date 变量,存储Falg->date的值
	* @param "date" Flag
	* @param time.Date date的默认值
	* @param 最后的参数是Flag的解释
	 */
	rootCmd.PersistentFlags().StringVar(&name, "author", "yzz", "程序作者")
	rootCmd.PersistentFlags().StringVar(&datetime, "date", "date", "当前日期")
}

func main() {
	rootCmd.Execute()
}

func run(cmd *cobra.Command, args []string) {
    //./test --author onename 会设置author
	fmt.Println(name)
    //./test --date date 输出当前天,--date time 输出当前准确时间
	if datetime == "date" {
		fmt.Println(time.Now().Day())
	} else if datetime == "time" {
		fmt.Println(time.Now())
	}
}
发布了80 篇原创文章 · 获赞 68 · 访问量 7577

猜你喜欢

转载自blog.csdn.net/weixin_44048823/article/details/95176304
今日推荐