Skip to content

feat: PLAN31_2-env-ops env 全操作の TUI 追加#58

Open
takemi-ohama wants to merge 3 commits into
release/PLAN31_2from
feature/PLAN31_2-env-ops
Open

feat: PLAN31_2-env-ops env 全操作の TUI 追加#58
takemi-ohama wants to merge 3 commits into
release/PLAN31_2from
feature/PLAN31_2-env-ops

Conversation

@takemi-ohama

@takemi-ohama takemi-ohama commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary

PLAN31_2 PR3 (env-ops)。実装プラン: issues/PLAN31_2_list-tui-unified.md / release PR: #55

devbase 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 申し送りの方式)
  • project スコープ依存 (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)
  • export/import は主要引数 (dest / source) のみ TUI で収集し、残りは CLI parser 既定値と同一の属性を明示付与 (parser との同期テスト 2 件で既定値乖離を検知)
  • ナビ規約は actions_project と同一 (Esc/← → 戻る = MENU_BACK、Ctrl-C → None 伝搬、引数収集中止 → サブメニュー再表示)

plan 契約表との乖離 (実装を正とした)

  • plan 2.3/3.3 は 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_env mock で、各サブコマンドが plan 2.3 契約どおりの属性を持つ Namespace で呼ばれることを検証
  • project スコープの chdir → 実行 → CWD/PWD 復帰 (例外時の finally 復帰・PWD 未設定環境含む)
  • env delete の confirm 拒否 (False) / 中止 (None) で未実行
  • Esc/← (MENU_BACK) / Ctrl-C (None) / 引数収集中止 (サブメニュー再表示) の遷移
  • export/import の既定値が cli._create_parser() の parse 結果と一致する同期テスト
  • uv run pytest 全体: 592 passed / 1 skipped (ベースライン 544 から +49、退行ゼロ)

🤖 Generated with Claude Code

@takemi-ohama takemi-ohama marked this pull request as ready for review June 10, 2026 04:10
takemi-ohama and others added 2 commits June 11, 2026 03:01
- 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>
@takemi-ohama takemi-ohama force-pushed the feature/PLAN31_2-env-ops branch from fe14808 to ebdd906 Compare June 11, 2026 03:10

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | codex | REQUEST_CHANGES

TUI の project スコープ操作で、選択したプロジェクトの .env に到達できない経路があります。

if keys_only is None:
return _ARG_CANCEL

return _dispatch(devbase_root, "list",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[major / 正確性] 「プロジェクトのみ」を選んでも project 選択や chdir/PWD 切替をしていないため、通常のトップメニュー起動では cmd_env_list が project .env を検出できず何も表示されません。project scope の場合は _select_project で対象を選び、_run_in_project 経由で list を実行してください。

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

対応しました — 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 takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 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>
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.

1 participant