Skip to content

CLI help を自己完結の説明に書き直し、library をサブコマンドとして統合する#108

Merged
TwoSquirrels merged 3 commits into
mainfrom
fix/cli-help
Jul 16, 2026
Merged

CLI help を自己完結の説明に書き直し、library をサブコマンドとして統合する#108
TwoSquirrels merged 3 commits into
mainfrom
fix/cli-help

Conversation

@TwoSquirrels

@TwoSquirrels TwoSquirrels commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Resolves #26

概要

CLI help を「その場で読み切れる自己完結の説明」に書き直し、library をトップレベルのサブコマンドとしてパーサに統合しました。Issue のコメントに整理した 10 項目すべてに対応しています。

変更内容

help の書き直し (docs)

  • -c-k の既定値 (g++ / std) を説明の 1 行目に明記
  • 長い help (--help) の 2 段落目に文脈を追加: keep の合成規則、--no-tree-shaking のフォールバック用途と --keep との違い、add-std の加算式の挙動、.risundlerc.toml の存在
  • --help の末尾に登録 → バンドルの Examples を追加 (-h には出さず一覧性を維持)
  • show -v の説明に実装先の名前 (implementation target names) を追加 (v2 追随漏れ)
  • help 内のバッククォートを全廃し、英語 README と用語を整合

パーサ統合 (feat)

risundle --help の Commands セクションに library が本物のサブコマンドとして現れるようにしました。従来は argv の先頭を見て 2 つの独立したパーサへ振り分けていたため、help に library が出ず末尾の案内文で補う案を Issue コメントでは示していましたが、走査で発見できる本物のセクションの方が UX 上優れると判断し、統合まで進めました。

  • clap の subcommand_negates_reqs + args_conflicts_with_subcommands で必須 positional <FILE> と optional subcommand を共存させる
  • <FILE> は clap の都合で Option<PathBuf> になるが required = true は維持され、バンドル経路では clap が存在を保証する
  • main.rs の argv 振り分けと LibraryCli を廃止し、architecture.md の記述を追随

--version の GNU 対応 (feat)

GNU Coding Standards の「--version は他のオプションや引数に優先してバージョンを表示し、成功終了する」に合わせ、どの階層で打っても risundle 本体のバージョンを答えるようにしました。

  • risundle library add -V のような打ちかけのコマンド (必須引数の欠落を含む) でも risundle 2.0.0 を表示して exit 0
  • 従来の risundle library -Vrisundle library 2.0.0 という表示でしたが、バージョンは本体で 1 つなので表示名も risundle に統一 (clap 既定のハイフン結合 risundle-library は実在しないバイナリ名を名乗るため display_name で上書き)

補足

  • typo (risundle librray ...) は従来「ファイルが読めない」という見当違いのエラーでしたが、parse 時の引数エラー (usage 付き) になりました

テスト

  • cli.rs に回帰テスト 4 件を追加 (subcommand 解釈・<FILE> 必須・フラグとの競合・全階層の --version)
  • cargo fmt --check / cargo test (219 件全通過) / cargo clippy --all-targets (pedantic) を確認
  • -h / --help / library --help / 各サブコマンドの help と、全階層の -V/--version の実出力を目視確認

🤖 Generated with Claude Code

TwoSquirrels and others added 2 commits July 16, 2026 16:17
- Usage を 2 行化し、library サブコマンドを risundle --help から発見できるようにする
- --help の末尾に登録 → バンドルの Examples を載せる (-h には出さない)
- -c と -k の既定値 (g++ / std) を 1 行目に明記する
- --no-tree-shaking のフォールバック用途と --keep との違い、add-std の加算式の挙動、
  .risundlerc.toml の存在を長い help の 2 段落目で説明する
- show -v の説明に実装先の名前 (implementation target names) を追加する (v2 追随漏れ)
- help 内のバッククォートを全廃する

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
risundle --help の Commands セクションに library が本物のサブコマンドとして
現れるようにする。従来は argv の先頭を見て 2 つの独立したパーサへ振り分けて
いたため、help に library が出ず末尾の案内文で補っていた。

clap の subcommand_negates_reqs + args_conflicts_with_subcommands で
必須 positional <FILE> と optional subcommand を共存させる。<FILE> は
この都合で Option 型になるが required は維持され、バンドル経路では
clap が存在を保証する。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8e679b9f-783a-429b-953d-dc07bb7b4917

📥 Commits

Reviewing files that changed from the base of the PR and between ebe61ed and c303db6.

📒 Files selected for processing (1)
  • src/cli.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/cli.rs

📝 Walkthrough

Summary by CodeRabbit

  • 新機能
    • CLIのコマンド体系を整理し、libraryを正式なサブコマンドとして利用できるようになりました。
    • バンドル処理とライブラリ管理を明確に分けて実行できます。
  • 改善
    • ヘルプ、使用方法、バージョン表示を各コマンドで統一しました。
    • ファイル指定の必須条件やオプションの競合チェックを改善しました。
    • --以降のコンパイラオプションを適切に扱えるようになりました。
  • ドキュメント
    • モジュール構成の説明を、サブコマンド対応に合わせて更新しました。

Walkthrough

トップレベルのCliCommandを導入し、libraryサブコマンドとbundle処理を統一的に解析・分岐する構成へ変更した。ファイル指定、ヘルプ設定、引数検証、関連テストも更新された。

Changes

CLIサブコマンド統合

Layer / File(s) Summary
CLI構造と解析検証
src/cli.rs
トップレベルCliCommand::Libraryを追加し、bundleのfileを任意値として扱いながら、サブコマンド別の必須条件・競合・引数解析・バージョン表示をテストする構成へ変更した。
実行分岐とbundle入力確定
src/main.rs, src/commands/bundle.rs, docs/architecture.md
mainが解析済みのサブコマンドに応じてlibraryまたはbundleを実行し、bundle側でファイル指定を確定して解決処理へ渡すよう更新した。アーキテクチャ説明もサブコマンド振り分けに合わせた。

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant Cli
  participant main
  participant LibraryRun as commands::library::run
  participant BundleRun as commands::bundle::run
  User->>Cli: CLI引数を入力
  Cli->>main: Cli::parse() の結果
  alt libraryサブコマンド
    main->>LibraryRun: LibraryCommandを渡す
  else bundle処理
    main->>BundleRun: BundleArgsを渡す
    BundleRun->>BundleRun: fileを確定
  end
Loading

Possibly related PRs

Poem

ぴょんと跳ねるCLI、道を整え
libraryの扉をサブコマンドで開け
bundleのファイルをしっかり抱え
helpの声も空へ届け
うさぎは満足、にんじんを食べる 🐇

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed 主要な変更であるCLI helpの改善とlibraryのサブコマンド統合を簡潔に表しています。
Description check ✅ Passed 説明文は変更内容と目的に沿っており、対象の差分と整合しています。
Linked Issues check ✅ Passed #26 の要件であるlibraryの可視化とhelp改善が反映されており、目的を満たしています。
Out of Scope Changes check ✅ Passed help改善とサブコマンド統合に必要な変更に収まっており、明確な逸脱は見当たりません。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

GNU Coding Standards の「--version は他のオプションや引数に優先して
バージョンを表示し、成功終了する」に合わせ、propagate_version で全
サブコマンドに -V/--version を生やす。表示名の既定はハイフン結合
(risundle-library 等) で実在しないバイナリ名を名乗ってしまい、clap は
display_name を伝播しないため、全サブコマンドで risundle に上書きする。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@TwoSquirrels

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@TwoSquirrels
TwoSquirrels merged commit cd8dcc3 into main Jul 16, 2026
10 checks passed
@TwoSquirrels
TwoSquirrels deleted the fix/cli-help branch July 16, 2026 09:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

help が雑

1 participant