Golang如何快速构建一个CLI小工具详解_第1页
Golang如何快速构建一个CLI小工具详解_第2页
Golang如何快速构建一个CLI小工具详解_第3页
Golang如何快速构建一个CLI小工具详解_第4页
Golang如何快速构建一个CLI小工具详解_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Golang如何快速构建一个CLI小工具详解目录如何Golang快速构建一个CLI小工具先上效果那么如何实现呢?

如何Golang快速构建一个CLI小工具

在现实开发的过程中,大家会发现很多开源的框架都会有着自己的一个CLI工具库来帮助开发者们通过命令行的方式快速的达到某些目的,比如常见的docker命令。

那么在这篇文章当中,主要给大家介绍一个golang的小框架,我们可以借助这个框架来快速搭建一个小的CLI工具

先上效果

我们这边构建了一个叫gtools的小工具,用来容纳我们自已用golang开发的一些小的工具

gtools

gtoolsisaCLIapplicationforgolangcommandtools.

Usage:

gtools[command]

AvailableCommands:

autoSelectorrandomlyselectstringfromalist

completionGeneratetheautocompletionscriptforthespecifiedshell

helpHelpaboutanycommand

Flags:

-h,--helphelpforgtools

-t,--toggleHelpmessagefortoggle

Use"gtools[command]--help"formoreinformationaboutacommand.

这边的autoSeletor是我们自己的一个小工具,用来随机的从输入的字符列表中选一个作为结果:

gtoolsas学习看电影还是学习

学习

gtoolsas学习看电影还是学习

还是学习

那么如何实现呢?

在这边,我们用了一个叫cobra的框架,这个框架被广泛运用到很多开源的产品当中,比如docker-compose,kubectl等。

首先,我们要安装相应的环境:

goget-u/spf13/cobra@latest

goinstall/spf13/cobra-cli@latest

在执行完上面两条命令后我们就具备最基本的开发条件了,接下来开始我们的开发吧!

使用Cobra初始化我们的项目

cobra-cliinit

执行完之后,我们会在本地目录看到这样的结构

├──main.go

├──cmd

│└──root.go

main.go就是我们的主入口了,root是我们命令的根命令

main.go

//只是做了一个执行的操作

funcmain(){

cmd.Execute()

Root.go定义了根命令,还有一些初始化的操作

varrootCmd=cobra.Command{

Use:"gtools",//这是你的命令的名字

Short:"Abriefdescriptionofyourapplication",

Long:`Alongerdescriptionthatspansmultiplelinesandlikelycontains

examplesandusageofusingyourapplication.Forexample:

CobraisaCLIlibraryforGothatempowersapplications.

Thisapplicationisatooltogeneratetheneededfiles

toquicklycreateaCobraapplication.`,

//Uncommentthefollowinglineifyourbareapplication

//hasanactionassociatedwithit:

//Run:func(cmd*cobra.Command,args[]string){},

//Executeaddsallchildcommandstotherootcommandandsetsflagsappropriately.

//Thisiscalledbymain.main().ItonlyneedstohappenoncetotherootCmd.

funcExecute(){

err:=rootCmd.Execute()

iferr!=nil{

os.Exit(1)

funcinit(){

//Hereyouwilldefineyourflagsandconfigurationsettings.

//Cobrasupportspersistentflags,which,ifdefinedhere,

//willbeglobalforyourapplication.

//rootCmd.PersistentFlags().StringVar(cfgFile,"config","","configfile(defaultis$HOME/.main.yaml)")

//Cobraalsosupportslocalflags,whichwillonlyrun

//whenthisactioniscalleddirectly.

rootCmd.Flags().BoolP("toggle","t",false,"Helpmessagefortoggle")

加入我们的子命令

现在,我们需要加入一个子命令,如autoSelector,只需执行一下命令即可:

cobra-cliaddautoSelector

对应的一个叫autoSelector.go的文件就会出现在cmd目录底下,并且已经为你准备了基本的命令行框架

//autoSelectorCmdrepresentstheautoSelectorcommand

varautoSelectorCmd=cobra.Command{

Use:"autoSelector",//名字

Aliases:[]string{"as"},//命令行的简写

Short:"randomlyselectstringfromalist",//简单的描述

Long:`randomlyselectstringfromalist`,//详细描述

Run:func(cmd*cobra.Command,args[]string){

//在这里加入/调用你的主要逻辑

funcinit(){

//注册到根命令下

rootCmd.AddCommand(autoSelectorCmd)

//Hereyouwilldefineyourflagsandconfigurationsettings.

//CobrasupportsPersistentFlagswhichwillworkforthiscommand

//andallsubcommands,e.g.:

//autoSelectorCmd.PersistentFlags().String("foo","","Ahelpforfoo")

//Cobrasupportslocalflagswhichwillonlyrunwhenthiscommand

//iscalleddirectly,e.g.:

//autoSelectorCmd.Flags().BoolP("toggle","t",false,"Helpmessagefortoggle")

实现我们的功能

我们可以创建一个pkg包来存放我们的具体实现逻辑,在cmd中只需要做简单的调用即可

import(

"math/rand"

"time"

//简单实现逻辑

funcAutoSelect(inputs[]string)(selectedstring,errerror){

source:=rand.NewSource(time.Now().UnixNano())

r:=rand.New(source)

randomIndex:=r.Intn(len(inputs))

selected=inputs[randomIndex]

returnselected,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论