Cobra は、強力な最新の CLI アプリケーションを作成するためのライブラリです。
Cobra は、いくつか例を挙げると、Kubernetes、Hugo、GitHub CLI などの多くの Go プロジェクトで使用されています。このリストには、Cobra を使用するプロジェクトのより広範なリストが含まれています。
Cobra は、git & go ツールに似た強力な最新の CLI インターフェイスを作成するためのシンプルなインターフェイスを提供するライブラリです。
コブラは以下を提供します:
簡単なサブコマンドベースの CLI: app server
、 app fetch
など。
完全に POSIX に準拠したフラグ (短いバージョンと長いバージョンを含む)
ネストされたサブコマンド
グローバル、ローカル、およびカスケード フラグ
インテリジェントな提案 ( app srver
... app server
ことですか?)
コマンドとフラグの自動ヘルプ生成
サブコマンドのグループ化ヘルプ
-h
、 --help
などの自動ヘルプ フラグ認識。
アプリケーション用に自動的に生成されるシェル オートコンプリート (bash、zsh、fish、powershell)
アプリケーション用に自動生成されたマニュアルページ
コマンドエイリアスにより、コマンドを壊さずに変更できる
独自のヘルプ、使用法などを定義できる柔軟性。
12-Factor アプリ向けの Viper とのオプションのシームレスな統合
Cobra はコマンド、引数、フラグの構造に基づいて構築されています。
コマンドはアクションを表し、引数は物であり、フラグはそれらのアクションの修飾子です。
最高のアプリケーションは、使用すると文章のように読み取れるため、ユーザーはアプリケーションの操作方法を直感的に理解できます。
従うパターンはAPPNAME VERB NOUN --ADJECTIVE
またはAPPNAME COMMAND ARG --FLAG
です。
この点については、実世界の優れた例をいくつか見てみましょう。
次の例では、「server」はコマンド、「port」はフラグです。
hugo server --port=1313
このコマンドでは、URL をそのままクローンするように Git に指示しています。
git clone URL --bare
コマンドはアプリケーションの中心点です。アプリケーションがサポートする各対話はコマンドに含まれます。コマンドには子コマンドを含めることができ、オプションでアクションを実行できます。
上の例では、「server」がコマンドです。
cobra.Command の詳細
フラグはコマンドの動作を変更する方法です。 Cobra は、完全に POSIX 準拠のフラグと Go フラグ パッケージをサポートしています。 Cobra コマンドでは、子コマンドまで持続するフラグと、そのコマンドでのみ使用できるフラグを定義できます。
上の例では、「ポート」がフラグです。
フラグ機能は、POSIX 準拠を追加しながら同じインターフェイスを維持するフラグ標準ライブラリのフォークである pflag ライブラリによって提供されます。
コブラの使用は簡単です。まず、 go get
を使用して、ライブラリの最新バージョンをインストールします。
go get -u github.com/spf13/cobra@latest
次に、アプリケーションに Cobra を含めます。
「github.com/spf13/cobra」をインポートします
cobra-cli
cobra アプリケーションとコマンド ファイルを生成するコマンド ライン プログラムです。アプリケーションのスキャフォールディングをブートストラップして、Cobra ベースのアプリケーションを迅速に開発します。これは、Cobra をアプリケーションに組み込む最も簡単な方法です。
以下を実行することでインストールできます。
go install github.com/spf13/cobra-cli@latest
Cobra-CLI ジェネレーターの使用方法の詳細については、Cobra Generator README をお読みください。
Cobra ライブラリの使用方法の詳細については、『Cobra ユーザー ガイド』を参照してください。
Cobra は、Apache 2.0 ライセンスに基づいてリリースされています。 LICENSE.txtを参照