Golang Cobra 値のない複数のフラグ

WBOY
リリース: 2024-02-05 23:00:14
転載
568 人が閲覧しました

Golang Cobra 多个标志没有值

質問の内容

私は golang を初めて使用し、cobra フレームワークを使用して最初の cli アプリケーションを試しています。

私の計画では、コマンドをほとんど使用せず、多くのフラグを使用することです。 これらのフラグは、-r と一緒に使用するだけでデバイスを再起動できるため、値を追加する必要はありません。

現在、次のように動作していますが、これは正しい方法ではないと考えています。 ご協力をよろしくお願いいたします。

現在のロジックでは、各コマンドにデフォルト値が追加され、実行コマンドでその値を探し、それをキャプチャした後に関数をトリガーします。

私の「作業コード」は以下のようになります。

私の init 関数には、コマンドに次の内容が含まれています。

リーリー

実行部分を以下に示します。

chargercmd.flags().stringp("updatefirmware", "u", "", "updeates the firmware of the charger")
    chargercmd.flags().lookup("updatefirmware").nooptdefval = "yes"
    chargercmd.flags().stringp("reboot", "r", "", "reboots the charger")
    chargercmd.flags().lookup("reboot").nooptdefval = "yes"
ログイン後にコピー

正解


burakのコメントで述べたように、おそらく使用法をもう少し明確にするため、コマンドとフラグをよりよく区別できるようになります。 cobra を使用すると、root コマンドと、root コマンドにサブコマンドを付加できます。さらに、各コマンドはフラグを受け入れることができます。

あなたの場合、charger はルート コマンドであり、update_firmwarereboot の 2 つのサブコマンドが必要です。

充電器を再起動する例として、次のコマンドを実行します:

リーリー

上記のコードでは、サブコマンドをフラグとして定義しようとしています。これは可能ですが、おそらく良い方法ではありません。

代わりに、プロジェクトは次のように設定する必要があります: https://github.com/hesamchobanlou/stackoverflow/tree/main/74934087

その後、ルートの Chargercmd ですべてのフラグのバリエーションをチェックする代わりに、cmd/update_firmware.go の下の対応するコマンド定義に updatefirmware(...) アクションを移動できます。

これで問題が解決しない場合は、あなたのアプローチが正しくないと思われる理由を詳しく教えてください。

以上がGolang Cobra 値のない複数のフラグの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート