feat: PLAN31_2-env-ops env 全操作の TUI 追加#58
Conversation
- tui/actions_env.py 新設: env init/list/set/get/delete/edit/sync/project/ export/import を選択メニュー + 引数収集で cmd_env へ委譲 (plan 2.3 契約) - project スコープ (set --project / project) は事前にプロジェクト選択 → chdir + PWD 切替で実行し、try/finally で必ず元の CWD/PWD へ復帰 (plan 3.3) - 破壊的な env delete は実行前に menu.confirm で確認 (plan 3.4) - export/import は主要引数 (dest/source) のみ収集し、残りは CLI parser 既定値と 同一の属性を明示付与 (parser との同期テスト付き) - tui/app.py の _route に env を配線、未実装カテゴリ前提のテストを plugin へ更新 - tests/cli/tui/test_actions_env.py 新設 (契約・chdir 復帰・confirm・ナビ遷移) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fe14808 to
ebdd906
Compare
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | REQUEST_CHANGES
TUI の project スコープ操作で、選択したプロジェクトの .env に到達できない経路があります。
| if keys_only is None: | ||
| return _ARG_CANCEL | ||
|
|
||
| return _dispatch(devbase_root, "list", |
There was a problem hiding this comment.
[major / 正確性] 「プロジェクトのみ」を選んでも project 選択や chdir/PWD 切替をしていないため、通常のトップメニュー起動では cmd_env_list が project .env を検出できず何も表示されません。project scope の場合は _select_project で対象を選び、_run_in_project 経由で list を実行してください。
There was a problem hiding this comment.
対応しました — lib/devbase/tui/actions_env.py の _run_list で「プロジェクトのみ」選択時に _select_project で対象を選ばせ、_run_in_project 経由 (chdir + PWD 切替 → 実行 → 復帰) で cmd_env_list を呼ぶよう修正しました (commit 03bbf68)。chdir + 復帰と選択中止の回帰テストも追加しています (593 passed)。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | gemini | APPROVE
PLAN31_2 に定義された仕様(project スコープでの chdir と復帰、破壊的操作時の確認プロンプト、引数収集と CLI parser との既定値同期)がテスト含め過不足なく正確に実装されていることを確認しました。指摘事項はありません。
cmd_env_list は PWD が projects/ 配下のときだけプロジェクト .env を表示する ため、TUI (通常 DEVBASE_ROOT で稼働) から project スコープを選んでも何も 表示されなかった (codex round1 major 指摘)。set/project と同様に _select_project で対象を選ばせ、_run_in_project 経由で実行するよう修正。 回帰テスト (chdir + 復帰 / 選択中止) を追加。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
PLAN31_2 PR3 (env-ops)。実装プラン:
issues/PLAN31_2_list-tui-unified.md/ release PR: #55devbase listの TUI に env カテゴリ (init/list/set/get/delete/edit/sync/project/export/import の全 10 サブコマンド) を追加する。lib/devbase/tui/actions_env.py新設: 操作選択メニュー → 引数収集 (tui.menuヘルパ) →dispatch_group(cmd_env, ...)で既存ハンドラへ委譲 (plan 2.3 の属性契約。ロジック二重実装なし)tui/app.pyの_routeに env を 1 行配線 (PR2〜5 申し送りの方式)set --project/project) は事前にプロジェクト選択メニュー (actions_project と同じ一覧取得を流用) →chdir+PWD切替で実行し、try/finally で必ず元の CWD/PWD へ復帰 (plan 3.3)。cmd_env_*はos.environ['PWD']で現在地判定するためos.chdirに加えてPWDも切り替えるenv deleteは実行前にmenu.confirm()。拒否/中止時は実行せずメニューへ戻る (plan 3.4)dest/source) のみ TUI で収集し、残りは CLI parser 既定値と同一の属性を明示付与 (parser との同期テスト 2 件で既定値乖離を検知)MENU_BACK、Ctrl-C →None伝搬、引数収集中止 → サブメニュー再表示)plan 契約表との乖離 (実装を正とした)
env editを CWD スコープとするが、実装cmd_env_editは常に$DEVBASE_ROOT/.envを開くグローバル操作のため、TUI ではプロジェクト選択・chdir を行わない (actions_env.py の docstring に明記)Test plan
tests/cli/tui/test_actions_env.py新設 (48 テスト):menu.*monkeypatch +cmd_envmock で、各サブコマンドが plan 2.3 契約どおりの属性を持つ Namespace で呼ばれることを検証env deleteの confirm 拒否 (False) / 中止 (None) で未実行MENU_BACK) / Ctrl-C (None) / 引数収集中止 (サブメニュー再表示) の遷移cli._create_parser()の parse 結果と一致する同期テストuv run pytest全体: 592 passed / 1 skipped (ベースライン 544 から +49、退行ゼロ)🤖 Generated with Claude Code