コブラ紹介
Cobraは、強力で最新のCLIアプリケーションを作成するためのライブラリであり、アプリケーションとコマンドファイルを生成するためのプログラムでもあります。
コブラは、次のような多くの囲碁のプロジェクトで使用されてKubernetes、ヒューゴ、およびGitHubのCLI。このリストには、Cobraを使用するプロジェクトの幅広いリストが含まれています。
概要概要
Cobraは、git&goツールと同様に、強力で最新のCLIインターフェイスを作成するためのシンプルなインターフェイスを提供するライブラリです。
Cobraもアプリケーションであり、Cobraベースのアプリケーションを迅速に開発するためのアプリケーションフレームワークを生成します。
コブラは以下を提供します:
- 子供のCLIに基づいて使いやすい:
app server
などapp fetch
。 - POSIXロゴと完全に互換性があります(ショートバージョンとロングバージョンを含む)
- ネストされたサブコマンド
- グローバル、ローカル、およびカスケードフラグ
- 生成が簡単なアプリケーションとコマンド、および
cobra init appname
&cobra 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()
}
コブラの使用
ディレクトリ構造
基本コマンド
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