Skip to content

Commit b9c7ca1

Browse files
takemi-ohamaclaude
andcommitted
docs: README/ドキュメントを現状の階層メニュー TUI に合わせて更新
PR #63#66 の TUI 変更 (確認プロンプト整理 / Enter 待ち / env メニュー再構成 / 最下部メニューバー) を反映し、ドキュメントを実装と整合させる。 - README: 「対話的なプロジェクト選択」を「階層メニュー TUI」へ刷新。 プロジェクト操作と最下部カテゴリメニュー (←→ 移動) を明記 - cli-reference: `devbase project list` を全面刷新。番号入力の旧説明を廃止し、 TUI の画面構成図・キー操作表・カテゴリ別操作一覧・確認プロンプトの範囲を追加 - container-operations: プロジェクト一覧の説明を TUI 前提に更新し詳細へリンク - architecture: 構成図と commands 表に project.py / tui/ を追加。tui/ の モジュール構成表を新設。cmd_project が container.py 側にある実態を反映 - 既存ドキュメントに元々抜けていた CLI サブコマンド (project rebuild / plugin migrate / env export・import) をコマンド一覧・ツリー図に補完 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 3f3fea4 commit b9c7ca1

4 files changed

Lines changed: 85 additions & 23 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ devbaseは、Docker Composeを使った再現性の高い開発環境を提供
1515
- **データ永続化**: 名前付きボリュームでコンテナ再起動後もデータを保持
1616
- **スナップショット管理**: `/home/ubuntu` 共通ボリュームの増分バックアップ・復元・世代管理
1717
- **環境変数の自動収集**: `devbase env init`でAWS/Git/GCP認証情報を対話的に設定
18-
- **対話的なプロジェクト選択**: `devbase list` の TUI メニュー(矢印キー移動・名前絞り込み対応)から起動対象を選択。起動中なら再起動 (up) / 再ビルド (rebuild) / 停止 (down) も選べます
18+
- **階層メニュー TUI**: `devbase list` のプロジェクト一覧(矢印キー移動・名前絞り込み対応)から起動・操作(up / down / login / ps / logs / scale / build / rebuild)を選択。画面最下部の常設メニュー(環境変数 / プラグイン / スナップショット / ステータス)へは ←→ キーで移動できます
1919
- **キャッシュ無効リビルド**: `devbase rebuild [name]``docker compose build --no-cache` 相当のイメージ再ビルドができます
2020

2121
## クイックスタート
@@ -112,9 +112,9 @@ devbaseのコマンドは4つのグループにまとめられています。
112112

113113
| グループ | 略記 | 説明 |
114114
|---------|------|------|
115-
| `project` || プロジェクト管理(up / down / login / ps / logs / scale / build / list) |
115+
| `project` || プロジェクト管理(up / down / login / ps / logs / scale / build / rebuild / list) |
116116
| `env` || 環境変数管理(init / sync / list / set / get / delete / edit / project / export / import) |
117-
| `plugin` | `pl` | プラグイン管理(list / install / uninstall / update / info / sync / repo) |
117+
| `plugin` | `pl` | プラグイン管理(list / install / uninstall / update / info / sync / migrate / repo) |
118118
| `snapshot` | `ss` | スナップショット管理(create / list / restore / copy / delete / rotate) |
119119

120120
> **`container`(略記 `ct`)グループは非推奨です。** `devbase project <sub>` のエイリアスとして当面動作しますが、非推奨警告を表示します。新しいコマンドは `project` を使用してください。

docs/developer/architecture.md

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,14 @@ flowchart TB
2020
2121
CliPy --> Init["commands/init.py"]
2222
CliPy --> Status["commands/status.py"]
23-
CliPy --> Container["commands/container.py"]
23+
CliPy --> Project["commands/project.py<br/>(list)"]
24+
CliPy --> Container["commands/container.py<br/>(project ライフサイクル / 非推奨 container)"]
2425
CliPy --> Env["commands/env.py"]
2526
CliPy --> Plugin["commands/plugin.py"]
2627
CliPy --> Snapshot["commands/snapshot.py"]
2728
29+
Project -->|"list (TTY)"| Tui["tui/<br/>(階層メニュー TUI)"]
30+
2831
CmdBuild --> Docker["docker buildx build / docker compose build"]
2932
```
3033

@@ -33,7 +36,7 @@ flowchart TB
3336
|| 担当 | 利点 |
3437
|----|------|------|
3538
| **Bash** (`bin/devbase`) | PATH 設定、シェル補完登録、環境変数エクスポート、`build` コマンド | シェル環境へのネイティブ統合。`source``.env` を読み込み、`DEVBASE_ROOT` を確定してから Python に渡せる |
36-
| **Python** (`lib/devbase/`) | init, status, container, env, plugin, snapshot | 複雑なロジック(YAML パース、Git 操作、差分バックアップ等)を安全かつ保守的に実装できる |
39+
| **Python** (`lib/devbase/`) | init, status, project, env, plugin, snapshot, tui | 複雑なロジック(YAML パース、Git 操作、差分バックアップ等)を安全かつ保守的に実装できる |
3740

3841
`build` コマンドだけが Bash 側に残っている理由は、Docker buildx の制御と compose.yml のパース処理がシェルスクリプトで完結するためである。
3942

@@ -64,11 +67,28 @@ Python 側のエントリーポイント。以下の責務を持つ。
6467
|-----------|---------|------|
6568
| `init.py` | `cmd_init` | PATH 追加、シェル補完設定、plugins.yml 初期化 |
6669
| `status.py` | `cmd_status` | コンテナ・プラグイン・環境変数の状態表示 |
67-
| `container.py` | `cmd_container` | docker compose を操作。up/down/ps/login/logs/scale/build |
68-
| `env.py` | `cmd_env` | 環境変数の管理。init/sync/list/set/get/delete/edit/project |
69-
| `plugin.py` | `cmd_plugin` | プラグインの管理。list/install/uninstall/update/info/sync/repo |
70+
| `project.py` | `cmd_project_list` ほか | プロジェクト一覧の表示と、TTY での `tui/` 階層メニュー起動 |
71+
| `container.py` | `cmd_project` / `cmd_container` | `project` / `container` グループのディスパッチと docker compose 操作の実体(up/down/ps/login/logs/scale/build/rebuild)。`container` は非推奨エイリアス(警告を出して転送) |
72+
| `env.py` | `cmd_env` | 環境変数の管理。init/sync/list/set/get/delete/edit/project/export/import |
73+
| `plugin.py` | `cmd_plugin` | プラグインの管理。list/install/uninstall/update/info/sync/migrate/repo |
7074
| `snapshot.py` | `cmd_snapshot` | スナップショットの管理。create/list/restore/copy/delete/rotate |
7175

76+
### tui/ -- 階層メニュー TUI
77+
78+
`devbase list`(= `project list`)が TTY で起動する対話メニュー。questionary
79+
(prompt_toolkit ベース) を任意依存とし、未導入時は番号入力フォールバックへ縮退する。
80+
`actions_*.py` は引数を収集して既存の `commands/*.py` ハンドラへ委譲するだけで、
81+
コマンドロジックを二重実装しない。
82+
83+
| モジュール | 役割 |
84+
|-----------|------|
85+
| `app.py` | トップ画面のループ。プロジェクト一覧 + 最下部の常設カテゴリメニューバー(`menu.select_with_menubar`)を表示し、選択を各カテゴリへ routing する |
86+
| `menu.py` | questionary ラッパ(`select` / `select_with_menubar` / `text` / `confirm` / `integer` / `path`)と Esc/← キーバインド・回答後ガード |
87+
| `flow.py` | 中止系番兵(Ctrl-C=`None` / Esc=`MENU_BACK` / 確認拒否)を例外へ変換する共通ナビ制御 |
88+
| `dispatch.py` | 収集した属性を Namespace に詰めて `cmd_*` ハンドラを呼ぶ薄い委譲層 |
89+
| `actions_project.py` | プロジェクト行の処理(up / 起動中は操作サブメニュー) |
90+
| `actions_env.py` / `actions_plugin.py` / `actions_snapshot.py` / `actions_status.py` | 各カテゴリの操作フロー |
91+
7292
### env/ -- 環境変数管理システム
7393

7494
環境変数の収集・保存・同期を担うサブシステム。

docs/user/cli-reference.md

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ graph TD
1616
A --> G[snapshot / ss]
1717
D --> D1["up / down / ps / logs / scale [name]"]
1818
D --> D3["login [index]"]
19-
D --> D4["build [image]"]
19+
D --> D4["build [image] / rebuild"]
2020
D --> D2["list [--no-interactive]"]
21-
E --> E1[init / sync / list / set / get / delete / edit / project]
22-
F --> F1[list / install / uninstall / update / info / sync]
21+
E --> E1[init / sync / list / set / get / delete / edit / project / export / import]
22+
F --> F1[list / install / uninstall / update / info / sync / migrate]
2323
F --> F2[repo add / repo remove / repo list / repo refresh]
2424
G --> G1[create / list / restore / copy / delete / rotate]
2525
```
@@ -276,9 +276,10 @@ devbase build [image]
276276
`$DEVBASE_ROOT/projects/` 配下のプロジェクトを `NAME` / `PLUGIN` / `STATUS` の一覧で
277277
表示します。
278278

279-
TTY(端末)では**デフォルトで対話選択**になり、番号入力で選んだプロジェクトを
280-
`project up` で起動します。パイプ・リダイレクト・CI などの非 TTY 環境では自動的に
281-
一覧表示のみへフォールバックします。
279+
TTY(端末)では**デフォルトで階層メニュー TUI** が起動し、プロジェクトの起動・操作と
280+
カテゴリ操作(環境変数 / プラグイン / スナップショット / ステータス)を 1 画面から
281+
実行できます。パイプ・リダイレクト・CI などの非 TTY 環境では自動的に一覧表示のみへ
282+
フォールバックします。
282283

283284
```
284285
devbase project list [--no-interactive|--plain|-P]
@@ -287,18 +288,55 @@ devbase list [--no-interactive|--plain|-P]
287288

288289
| オプション | 説明 |
289290
|-----------|------|
290-
| `--no-interactive` / `--plain` / `-P` | 対話選択せず一覧表示のみ |
291-
| `--interactive` / `-i` | (後方互換)対話選択。デフォルトのため通常は不要 |
291+
| `--no-interactive` / `--plain` / `-P` | TUI を起動せず一覧表示のみ |
292+
| `--interactive` / `-i` | (後方互換)TUI 起動。デフォルトのため通常は不要 |
293+
294+
#### TUI の画面構成とキー操作
295+
296+
```
297+
? プロジェクトまたは操作を選択 (↑↓ 移動 / 名前で絞り込み / ←→ 下部メニュー / Enter 決定 / Esc・Ctrl-C 終了):
298+
» [1] adminer (adminer, running (2 containers))
299+
[2] carmo (carmo, stopped)
300+
──────────────────────────────────────────────────────────────
301+
環境変数 プラグイン スナップショット ステータス
302+
```
303+
304+
| キー | 動作 |
305+
|------|------|
306+
| ↑↓ / 文字入力 | プロジェクト一覧の移動・名前での絞り込み |
307+
| ← → | 最下部の常設カテゴリメニューへ移動し項目間を巡回(バー上の ↑↓ で一覧へ戻る) |
308+
| Enter | 決定。停止中プロジェクトはそのまま起動 (up)、起動中プロジェクトは操作サブメニューを表示 |
309+
| Esc / ← | サブメニューでは 1 つ前の画面へ戻る(トップでは Esc で終了) |
310+
| Ctrl-C | どの画面でも全体を中止 |
311+
312+
起動中プロジェクトの操作サブメニューでは up / down / login / ps / logs / scale /
313+
build / rebuild を選べます。最下部のカテゴリメニューから実行できる操作
314+
(実体は対応する CLI コマンドへの委譲):
315+
316+
| カテゴリ | 選べる操作 |
317+
|---------|-----------|
318+
| 環境変数 | 変数一覧(グローバル)/ edit / sync / project / init |
319+
| プラグイン | 導入済み一覧 / 利用可能一覧 / install / uninstall / update / info / sync / migrate / repo 管理 |
320+
| スナップショット | list / create / restore / copy / delete / rotate |
321+
| ステータス | 環境全体の状態を表示(`devbase status` 相当) |
322+
323+
- 確認プロンプト (y/N) が出るのは破壊的操作(plugin uninstall / plugin repo remove /
324+
snapshot restore / snapshot delete)のみで、その他は CLI 既定値で即実行します
325+
- 操作の出力後は Enter キーで一覧へ戻ります(出力が流れて読めなくなるのを防ぐため)
326+
- TUI が提供しない細かいオプション(`env get/set/delete/export/import`
327+
`plugin install --link/--all``snapshot create --full``logs --follow` 等)は
328+
CLI を使用してください
329+
- questionary 未導入時は従来の番号入力(選択 → up)にフォールバックします
292330

293331
```bash
294-
# 一覧を表示して番号で選択・起動(TTY デフォルト)
332+
# 階層メニュー TUI を起動(TTY デフォルト)
295333
devbase list
296334

297-
# 一覧表示のみ(選択しない
335+
# 一覧表示のみ(TUI を起動しない
298336
devbase list --no-interactive
299337
```
300338

301-
出力例:
339+
出力例`--no-interactive` / 非 TTY):
302340

303341
```
304342
NAME PLUGIN STATUS

docs/user/container-operations.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -238,16 +238,20 @@ devbase project logs -f --tail 100
238238
### プロジェクト一覧
239239

240240
```bash
241-
# 一覧を表示し、番号で選択して起動(TTY ではこれがデフォルト)
241+
# 階層メニュー TUI を起動(TTY ではこれがデフォルト)
242242
devbase list
243243

244244
# 選択せず NAME / PLUGIN / STATUS の一覧表示のみ
245245
devbase list --no-interactive # --plain / -P も同義
246246
```
247247

248-
> TTY(端末)では `devbase list` はデフォルトで対話選択になり、番号入力で
249-
> そのプロジェクトを起動します。パイプ・リダイレクト・CI などの非 TTY 環境では
250-
> 自動的に一覧表示のみにフォールバックします。
248+
> TTY(端末)では `devbase list` はデフォルトで階層メニュー TUI になり、
249+
> プロジェクトを選んで起動・操作(up / down / login / ps / logs / scale /
250+
> build / rebuild)できるほか、画面最下部の常設メニュー(環境変数 / プラグイン /
251+
> スナップショット / ステータス)へ ←→ キーで移動して各管理操作を実行できます。
252+
> パイプ・リダイレクト・CI などの非 TTY 環境では自動的に一覧表示のみに
253+
> フォールバックします。画面構成とキー操作の詳細は
254+
> [CLI リファレンス](cli-reference.md#devbase-project-list) を参照してください。
251255
252256
`devbase project ps` が「対象プロジェクト 1 つのコンテナ状態」を表示するのに対し、
253257
`devbase list` は「全プロジェクトの横断一覧」を表示します。

0 commit comments

Comments
 (0)