Skip to content

feat(list): devbase list を対話選択デフォルトに変更#39

Merged
takemi-ohama merged 2 commits into
mainfrom
feat/list-interactive-default
Jun 7, 2026
Merged

feat(list): devbase list を対話選択デフォルトに変更#39
takemi-ohama merged 2 commits into
mainfrom
feat/list-interactive-default

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

Pull Request

概要

devbase list / devbase project list を、TTY(端末)ではデフォルトで対話選択になるように変更しました。一覧から番号を入力して選んだプロジェクトを project up で起動します。これまで --interactive / -i を明示しないと一覧表示のみだった挙動を反転し、よく使う「一覧 → 選んで起動」をワンステップで行えるようにします。

スクリプト互換性のため、パイプ・リダイレクト・CI などの非 TTY 環境では自動的に一覧表示のみへフォールバックします。

関連 Issue

  • なし(ユーザー要望: 「devbase list は -i 付きをデフォルトに」)

変更点

  • lib/devbase/cli.py: --interactivedefault=True 化し、一覧表示のみ用に --no-interactive(同義 --plain / -P)を追加。--interactive / -i は後方互換のため引き続き受理(実質 no-op)。
  • lib/devbase/commands/project.py: sys.stdin.isatty() ゲートを追加し、非 TTY では対話起動せず一覧表示へ自動フォールバック(import sys 追加)。
  • etc/devbase-completion.bash / etc/_devbase: bash / zsh 補完に --no-interactive / --plain / -P を追加。
  • docs/user/cli-reference.md / docs/user/container-operations.md / CHANGELOG.md: 新しいデフォルト挙動とフラグ体系に更新。
  • tests/cli/test_project_list.py / tests/cli/test_completion.py: 既存テストをデフォルト変更に追従。非 TTY フォールバックの新規テストを追加。対話テストは isatty を True に固定。

動作確認

  • uv run pytest 全テスト green(424 passed, 1 skipped)
  • --no-interactive / --plain / -Pinteractive=False、引数なし・-iinteractive=True をパーサテストで確認
  • 非 TTY で対話起動せず一覧表示へフォールバックすることをテストで確認
  • 端末上で devbase list(対話選択)/ devbase list --no-interactive(一覧のみ)の手動確認

補足

  • 非 TTY 自動フォールバックは、既存のスクリプト用途で devbase list がブロックしないための設計判断です。
  • --interactive / -i は破壊的変更を避けるため互換維持しています(デフォルトオンのため通常は不要)。

`devbase list` / `devbase project list` を TTY ではデフォルトで対話選択
(番号入力 → project up 起動) にする。一覧表示のみは `--no-interactive`
(`--plain` / `-P`)。非 TTY (パイプ/CI 等) では自動的に一覧表示へ
フォールバックする。`--interactive` / `-i` は後方互換として維持。

- cli.py: --interactive を default=True 化、--no-interactive 追加
- project.py: sys.stdin.isatty() ゲートで非 TTY 自動フォールバック
- bash/zsh 補完、ドキュメント、CHANGELOG を更新
- 非 TTY フォールバックの新規テスト追加

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@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

非 TTY フォールバックの判定が stdin のみに留まっており、stdout がパイプ・リダイレクトされたケースで対話選択が起動します。説明と互換性要件に合わせて、出力側も含めた TTY 判定にしてください。

Comment thread lib/devbase/commands/project.py Outdated
`devbase list | cat` や `devbase list > out.txt` のように stdout だけが
非 TTY のケースでも対話選択が起動してしまう問題を修正。stdin / stdout の
いずれかが非 TTY なら確実に一覧表示へフォールバックするよう判定を拡張した。
stdout 非 TTY フォールバックのテストも追加。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@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 2 | codex | APPROVE

追加の修正提案はありません。

@takemi-ohama takemi-ohama merged commit f2082ea into main Jun 7, 2026
5 checks passed
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