golang命令行庫cobra的使用

2021-08-16 16:46:13 字數 1521 閱讀 9415

golang命令行庫cobra的使用

一、簡介

cobra是乙個golang庫,它提供了乙個簡單的程式設計介面來建立類似於git和go工具的強大的現代cli介面。

cobra同時提供了乙個工具,幫程式設計師快速實現cli框架。

cobra具有如下強大的功能:

2.完全相容posix命令列模式

3.巢狀子命令subcommand

4.支援全域性,區域性,串聯flags

7.自動生成commands和flags的幫助資訊

9.自動識別-h,--help幫助flag

10.自動生成應用程式在bash下命令自動完成功能

11.自動生成應用程式的man手冊

12.命令列別名

13.自定義help和usage資訊

cobra建立在如下概念基礎上

命令(commands):表明執行什麼動作(command)

引數(args):    表明執行動作需要的條件引數(arg)

選項(flags):   表明執行動作的的可選項(flag)

形式如下:

二、用法

生成如下目錄結構

license

│  main.go

│└─cmd

root.go

2.cobra add 

一旦生成應用程式框架後,就可以用過cobra add命令新增命令了

如下依次新增三條命令,serve , config ,config->create (config的子命令) 

cobra add serve

cobra add config

cobra add config create

以上命令執行後,目錄結構如下:

license

│  main.go

│└─cmd

config.go

create.go

root.go

serve.go

整個過程如下:

serve called

config called

create called

3.配置cobra generator

author: steve francia

license: mit

內建license支援gplv2, gplv3, lgpl, agpl, mit, 2-clause bsd or 3-clause bsd.

也可以自定義license欄位,示例如下:

license:

text: |

this is my license. there are many like it, but this one is mine.

my license is my best friend. it is my life. i must master it as i must

master my life.

命令:cobra add  update --config config.yaml 

可以新增命令update command.

golang 命令列cobra妙用

大型專案中少不了資料公升級,如果採用web服務,一來不夠安全,二來資料量大的時候也會出超時的情況。這時使用命令列是比較合適的方式了。web專案一般採用mvc模式,對於命令列有嗎?對於命令列則有command 命令 和flag 引數 golang自帶了flag包,不過功能不夠強大,這裡我們使用第三方包...

golang命令列解析

golang從誕生到現在不到十年,使用者量確一路高漲,這個跟golang系統包提供很多開發者經常要用到的功能多少有些關係。乙個更新的語言,在設計的時候會更多的結合眾多開發者常見的需求,將常用的東西放到基礎包,可以避免大量造輪子。golang基礎包中flag包就是用來解決常見的命令列解析問題。下面來介...

python 命令行庫 python之cmd庫學習

一 cmd介紹 引用python的官方文件the cmd class provides a framework for writing line oriented command interpreters.these are often useful for test harnesses,admin...