問題タブ [go-cobra]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 省略形フラグとして扱われる負の整数を防ぐ方法
負の整数を含むコマンド ライン引数を解析する必要があります。最適なライブラリは spf13/cobra です。
残念ながら、cobra-1
は、もちろん定義されていない省略形のフラグであると考えています。
私は-1
同じ結果で一重引用符と二重引用符を試しました。フラグの代わりに引数としてコブラに負の整数を残すにはどうすればよいですか?
go - Cobra コマンドライン ツールで、異なるフラグに同じ変数を使用する方法は?
この Cobra アプリの例https://github.com/kurtpeek/myCobraAppには、次のコマンドで Cobra ジェネレーターを使用してスキャフォールディングされた Cobra アプリが含まれています。
ディレクトリ構造は
ではconfig.go
、文字列変数deviceUUID
が定義され、そのコマンドのデフォルト値のフラグにバインドされます"configDeviceUUID"
。
同様にserve.go
、deviceUUID
変数はローカル フラグにバインドされます。
問題は、コマンド ラインでフラグconfig
を指定せずにコマンドを実行すると、コマンドからデフォルト値が取得されることです。deviceUUID
serve
起こっているように見えるのはinit()
、各ファイルの関数がアルファベット順に実行され、最後に実行された関数がフラグのデフォルト値を設定することです。
この動作を回避するにはどうすればよいですか? config.go
設定されたデフォルト値が常にコマンドに適用されるようにしたいと思いますconfig
。configDeviceUUID
(もちろん、 と のように個別の変数を宣言することもできますserveDeviceUUID
が、これは少し面倒に思えます)。
go - cobra コマンドから別のコマンドに変数を渡す
私は、ブロックチェーン p2p ノードを起動する Go アプリに取り組んでいます。今のところ、ユーザーは手動で p2p ノードを開始し、ターミナル経由でデータを送信する必要があります。REST経由でブロックチェーンからデータを追加/読み取るためにHTTPサーバーを追加しようとしています。問題は、私が Cobra CLI を使用して p2p ノードの開始を処理しているため、別のコマンドを追加して go-gin HTTP サーバーを開始することです。最初の p2p ノードを開始すると、ブロックチェーンへの参照が返されます。その参照を http サーバーを開始する関数に渡すのに苦労しています。
構造体:
p2p ノードを開始する Cobra コマンド
HTTP サーバーの開始
問題は、変数nc
を最初のコマンドから 2 番目のコマンドに渡すことです。メソッド内Init()
なので返せないので、最初のコマンドのパッケージでグローバル変数を作成して、2番目のコマンドのパッケージからアクセスしてみましたが、いつもnil
で、理由がわかりません(おそらくスコープの問題)。
2 つのコマンドを 1 つのコマンドに混ぜて (p2p ノードと http サーバーを起動)、go ルーチンとチャネルを使用して を渡してみましnc
たが、go ルーチンはバックグラウンドで実行され、p2p ノードの起動にはユーザーの対話が必要なため、問題が発生しました。
これを達成するためのより良い/スムーズな方法はありますか?