[cobra]-強力なCLIアプリケーションライブラリ

コブラ紹介

title.img

Cobraは、強力で最新のCLIアプリケーションを作成するためのライブラリであり、アプリケーションとコマンドファイルを生成するためのプログラムでもあります。

コブラは、次のような多くの囲碁のプロジェクトで使用されてKubernetesヒューゴ、およびGitHubのCLIこのリストには、Cobraを使用するプロジェクトの幅広いリストが含まれています。

概要概要

Cobraは、git&goツールと同様に、強力で最新のCLIインターフェイスを作成するためのシンプルなインターフェイスを提供するライブラリです。

Cobraもアプリケーションであり、Cobraベースのアプリケーションを迅速に開発するためのアプリケーションフレームワークを生成します。

コブラは以下を提供します:

  • 子供のCLIに基づいて使いやすい:app serverなどapp fetch
  • POSIXロゴと完全に互換性があります(ショートバージョンとロングバージョンを含む)
  • ネストされたサブコマンド
  • グローバル、ローカル、およびカスケードフラグ
  • 生成が簡単なアプリケーションとコマンド、およびcobra init appnamecobra add cmdname
  • 賢明なアドバイス(app srver...あなたはapp serverそれを意味しますか?)
  • 自動生成されたコマンドとサインを支援する
  • 自動ヘルプ標識認識-h--helpなど
  • アプリケーション(bash、zsh、fish、powershell)用に自動的に生成されたシェルオートコンプリート機能
  • アプリケーションのマニュアルページを自動的に生成します
  • コマンドエイリアスを使用して、コンテンツを壊さずに変更できるようにします
  • 独自のヘルプ、使用法の柔軟性などを定義します。
  • オプションでバイパーと緊密に統合されており、12要素のアプリケーションに使用できます

概念

Cobraは、コマンド、パラメーター、およびフラグの構造に基づいて構築されています。

コマンドはアクションを表し、引数は物であり、フラグはこれらのアクションの修飾子です。

最高のアプリは、使用すると文章のように読み取られ、その結果、ユーザーはアプリの操作方法を直感的に理解できます。

パターンに従うAPPNAME VERB NOUN --ADJECTIVE.か、APPNAME COMMAND ARG --FLAG

いくつかの実際の例は、この点をよりよく説明することができます。

次の例では、「server」がコマンドで、「port」がフラグです。

hugo server --port=1313

このコマンドでは、URLのコンテンツを複製するようにGitに指示します。

git clone URL --bare

インストール

コブラは使いやすいです。まず、を使用go getして最新バージョンのライブラリをインストールします。このコマンドは、cobraジェネレーターの実行可能ファイルとライブラリおよびその依存関係をインストールします。

go get -u github.com/spf13/cobra

次に、アプリケーションにCobraを含めます。

import "github.com/spf13/cobra"

入門

独自の組織を提供することは大歓迎ですが、通常、Cobraベースのアプリケーションは次の組織構造に従います。

  ▾ appName/
    ▾ cmd/
        add.go
        your.go
        commands.go
        here.go
      main.go

Cobraアプリケーションでは、main.goファイルは通常非常にむき出しです。これには1つの目的があります:Cobraを初期化することです

package main

import (
  "{pathToYourApp}/cmd"
)

func main() {
  cmd.Execute()
}

コブラの使用

ディレクトリ構造

画像-20210218100009073

基本コマンド

root.goファイルを作成し、基本コマンドを定義します

package cmd

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

var RootCmd = &cobra.Command{
	Use: "gonne",
	Run: func(cmd *cobra.Command, args []string) {
		if len(args) == 0 {
			cmd.Help()
			return
		}
	},
}

main関数でコマンドを使用するのはそれと同じくらい簡単です

main.goファイル

package main

import (
	"demo-practice/cobra/cmd"
	"fmt"
	"os"
)

func main() {
	if err := cmd.RootCmd.Execute(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
}

Windows環境でコンパイルする

go build -o gonne.exe

コマンドを実行して効果を確認します。出力内容は次のとおりです。

gonne.exe

使用法:
スカート[フラグ]
スカート[コマンド]

使用可能なコマンド:
help任意のコマンド
バージョンに関するヘルプGonneのバージョン番号を出力します

フラグ:
-h、-gonneのヘルプを支援

コマンドの詳細については、「gonne [command]-help」を使用してください。

サブコマンド

基本コマンドへのサブコマンドの追加も非常に簡単です。基本コマンドとメインメソッドにコードを記述する必要はありません。新しいgoファイルを作成するだけで済みます。複数のサブコマンドも互いに独立しています。なんてエレガントなコードでしょう。さまざまなケースに別れを告げましょう。

バージョンコマンドの使用法を追加します。

次の内容のversion.goファイルをcmdディレクトリに追加します

package cmd

import "github.com/spf13/cobra"

func init() {
	RootCmd.AddCommand(versionCmd)
}

var versionCmd = &cobra.Command{
	Use:   "version",
	Short: "Print the version number of Gonne",
	Run: func(cmd *cobra.Command, args []string) {
		println("gonne version is 0.0.1")
	},
}

init()関数は、このコマンドを基本コマンドに追加します

コンパイル後に実行する gonne version

ゴンネバージョンは0.0.1です

リソースリスト

https://github.com/spf13/cobra

おすすめ

転載: blog.csdn.net/HapplyFox/article/details/114011776