Commit d75b0bd
authored
fix: 存在しないサブコマンドへの --help をエラー扱いにして exit 1 を返す (#147)
* fix: 存在しないサブコマンドへの --help をエラー扱いにして exit 1 を返す
Commander は --help/-h を検出すると、残りの operand が既知のサブコマンドか
検証せずにヘルプを表示して exit 0 していた (例: geonic hello --help)。
サブコマンドを持つコマンドの outputHelp をラップし、未解決の operand が
残っている場合は 'geonic help <unknown>' と同じエラー形式で exit 1 にする。
* fix: --help エラー処理のレビュー指摘対応
- operand 判定を cmd.args 先頭トークンに限定し、未知オプションの値を
サブコマンド名と誤認しないようにする (--bogus json --help 等)。
副作用として --help が先行する場合 (geonic --help hello) は
従来どおりヘルプ表示に戻る
- エラーメッセージはユーザーが入力したエイリアス (models, batch) を
そのまま echo し、正規名に置換しない (rawArgs から復元)
- unknown-command エラー出力を unknownCommandError() に統合し、
showHelp との重複を解消
- テストの spy ボイラープレートを runExpectingError/runExpectingHelp に
集約し、既存テストも移行
* docs: CHANGELOG に #147 のエントリを追加
* fix: typed トークンの復元を rawArgs スキャンから preSubcommand フックに置換
rawArgs の文字列スキャンは、グローバルオプション (--service 等) の値が
コマンド名/エイリアスと衝突すると誤ったトークンを echo していた
(例: geonic --service custom-data-models models badsub --help が
'custom-data-models badsub' と表示)。
preSubcommand フックで dispatch 時に commander 自身が解決した operand
(parent.args[0]) を WeakMap に記録する方式へ変更。オプション値は
parseOptions で消費済みのため衝突しない。あわせて:
- 空文字 operand を unknown 扱いしない (truthiness ガード)
- 回帰テスト 3 件追加 (オプション値衝突 / サブグループで --help 先行 /
空文字 operand)
* test: レビュー指摘対応 — テストヘルパーの spy 復元を try/finally で保証1 parent b565b47 commit d75b0bd
4 files changed
Lines changed: 179 additions & 23 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
10 | 15 | | |
11 | 16 | | |
12 | 17 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| 65 | + | |
| 66 | + | |
65 | 67 | | |
66 | 68 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
220 | 220 | | |
221 | 221 | | |
222 | 222 | | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
223 | 229 | | |
224 | 230 | | |
225 | 231 | | |
| |||
232 | 238 | | |
233 | 239 | | |
234 | 240 | | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
| 241 | + | |
241 | 242 | | |
242 | 243 | | |
243 | 244 | | |
| |||
249 | 250 | | |
250 | 251 | | |
251 | 252 | | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
252 | 309 | | |
253 | 310 | | |
254 | 311 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
19 | 43 | | |
20 | 44 | | |
21 | 45 | | |
| |||
609 | 633 | | |
610 | 634 | | |
611 | 635 | | |
612 | | - | |
613 | | - | |
614 | | - | |
615 | | - | |
616 | | - | |
617 | | - | |
618 | | - | |
619 | | - | |
620 | | - | |
621 | | - | |
622 | | - | |
623 | | - | |
624 | | - | |
625 | | - | |
626 | | - | |
| 636 | + | |
| 637 | + | |
627 | 638 | | |
628 | 639 | | |
629 | 640 | | |
| |||
683 | 694 | | |
684 | 695 | | |
685 | 696 | | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
686 | 778 | | |
687 | 779 | | |
688 | 780 | | |
| |||
0 commit comments