@@ -275,12 +275,12 @@ _参考文献: [The Anti-Mac User Interface (Don Gentner and Jakob Nielsen)](htt
275
275
* Julia: [ ArgParse.jl] ( https://github.com/carlobaldassi/ArgParse.jl ) , [ Comonicon.jl] ( https://github.com/comonicon/Comonicon.jl )
276
276
* Kotlin: [ clikt] ( https://ajalt.github.io/clikt/ )
277
277
* Node: [ oclif] ( https://oclif.io/ )
278
- * Deno: [ flags ] ( https://deno.land/ std/flags )
278
+ * Deno: [ parseArgs ] ( https://jsr.io/@ std/cli/doc/parse-args/~/parseArgs )
279
279
* Perl: [ Getopt::Long] ( https://metacpan.org/pod/Getopt::Long )
280
280
* PHP: [ console] ( https://github.com/symfony/console ) , [ CLImate] ( https://climate.thephpleague.com )
281
281
* Python: [ Argparse] ( https://docs.python.org/3/library/argparse.html ) , [ Click] ( https://click.palletsprojects.com/ ) , [ Typer] ( https://github.com/tiangolo/typer )
282
282
* Ruby: [ TTY] ( https://ttytoolkit.org/ )
283
- * Rust: [ clap] ( https://clap .rs/ )
283
+ * Rust: [ clap] ( https://docs .rs/clap )
284
284
* Swift: [ swift-argument-parser] ( https://github.com/apple/swift-argument-parser )
285
285
286
286
** 成功時は終了コードゼロ、失敗時には非ゼロを返してください。**
@@ -300,8 +300,10 @@ _参考文献: [The Anti-Mac User Interface (Don Gentner and Jakob Nielsen)](htt
300
300
** なにもオプションを指定しなかった時、` -h ` や` --help ` フラグが指定された時にはヘルプテキストを表示してください。**
301
301
302
302
** デフォルトでは簡潔なヘルプテキストを出力するようにしてください。**
303
- 可能なら、` myapp ` や` myapp subcommand ` が実行された時はデフォルトでヘルプテキストを表示するようにしてください。
304
- プログラムが非常にシンプルで明らかなデフォルトの動作があるとき (例: ` ls ` ) や、プログラムが入力をインタラクティブに受け取る時 (例: ` cat ` ) はその限りではありません。
303
+ ` myapp ` や` myapp subcommand ` が引数なしで実行された時は、ヘルプテキストを表示してください。
304
+
305
+ プログラムが非常にシンプルで明らかなデフォルトの動作があるとき (例: ` ls ` 、` git pull ` ) や、
306
+ デフォルトでインタラクティブに動作するとき (例: ` npm init ` ) はこのガイドラインを無視しても構いません。
305
307
306
308
簡潔なヘルプテキストは以下のもののみを含むべきです。
307
309
@@ -544,7 +546,7 @@ _TTYが何かについては[参考文献を読んでください。](https://un
544
546
たとえば、` grep ` に出力を流して期待する出力を得ることがあります。
545
547
546
548
> “すべてのプログラムの出力は、未知のものも含めた他のプログラムの入力となることを期待する。”
547
- — [ Doug McIlroy] ( https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s06.html )
549
+ — [ Doug McIlroy] ( http://web.archive.org/web/20220609080931/ https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s06.html)
548
550
549
551
** 人間可読な出力が機械可読な出力を壊す場合、` --plain ` で出力を平易な、` grep ` や` awk ` のようなツールと統合できる表形式のテキストフォーマットにするようにしてください。**
550
552
場合によっては、人間にとって読みやすいのとは異なる方法で出力を行う必要があるかもしれません。
@@ -640,7 +642,7 @@ drwxr-xr-x 2 root root 4.0K Jul 20 14:57 skel
640
642
641
643
- ` stdout ` や` stderr ` がインタラクティブなターミナル (TTY) ではない。
642
644
この2つは個別にチェックするのが最良です。` stdout ` を他のプログラムにパイプ接続しているときでも、` stderr ` に色がついていると便利です。
643
- - ` NO_COLOR ` 環境変数が設定されている 。
645
+ - ` NO_COLOR ` 環境変数が設定されており、空でない(値は問いません) 。
644
646
- ` TERM ` 環境変数の値が` dumb ` である。
645
647
- ユーザが` --no-color ` オプションを渡した。
646
648
- 特にあなたのプログラムだけ色を無効化したいという場合は` MYAPP_NO_COLOR ` 環境変数を追加したくなるかもしれません。
@@ -688,7 +690,7 @@ verboseモードでない時にログレベルのラベル (`ERR`、`WARN`等)
688
690
** 大量のテキストを出力する時はページャ (例: ` less ` ) を使ってください。**
689
691
たとえば、` git diff ` はデフォルトでこれを行います。
690
692
ページャの使用は問題を起こしやすいので、ユーザの体験を損なわないように実装には気をつけてください。
691
- ` stdin ` や` stdout ` がインタラクティブなターミナルでないならページャを使うべきではありません 。
693
+ ` stdin ` や` stdout ` がインタラクティブなターミナルである場合のみページャを使うようにしてください 。
692
694
693
695
` less ` に対する優れたオプション指定は` less -FIRX ` です。
694
696
これによってコンテンツがスクリーンに収まる場合は動作せず、検索の際に大文字・小文字を無視し、色と書式を有効化し、` less ` が終了した時に画面にコンテンツを残すようになります。
@@ -848,12 +850,13 @@ unknown flag: --foo
848
850
** シークレットをフラグから直接読まないでください。**
849
851
` --password ` のような形でコマンドがシークレットを受け取るとき、引数の値は` ps ` の出力や場合によりシェルの履歴等から漏洩します。
850
852
さらに、この手のフラグはシークレットに対するセキュアでない環境変数の使用を招きます。
853
+ (環境変数は他のユーザに読まれたり、値がデバッグログに残ったりすることがよくあるため、セキュアではありません。)
851
854
852
855
` --password-file ` のようにセンシティブなデータをファイルからのみ受け取るか、` stdin ` から受け取ることを検討してください。
853
856
` --password-file ` フラグは、様々なコンテキストにおいてシークレットをこっそりと渡すことを可能にします。
854
857
855
858
(Bashでは` --password $(< password.txt) ` のようにファイルの内容を渡すことが可能です。
856
- このアプローチは ` ps ` の出力によってファイルの中身が漏洩する同じようなセキュリティリスクがあります 。
859
+ このアプローチには環境変数と同様のセキュリティリスクがあります 。
857
860
避けるべきです。)
858
861
859
862
### インタラクティブ性 {#interactivity}
0 commit comments