Skip to content

Commit d8b520b

Browse files
takemi-ohamaclaude
andcommitted
feat: PLAN06-4 補完 + docs + CHANGELOG + container 非推奨告知
PLAN06 で導入した project サブコマンド体系をシェル補完・ドキュメント・ CHANGELOG に反映し、container グループの非推奨を告知する。 - etc/devbase-completion.bash / etc/_devbase: - project グループ補完 (up/down/ps/login/logs/scale/build/list) を追加 - プロジェクト名補完 (_devbase_project_names: $DEVBASE_ROOT/projects/ 配下を 列挙) を project up/down/ps/logs/scale とトップレベルシノニム up/down/ps/scale に追加 - project list / top-level list の --interactive / -i 補完 - container は補完候補に残しつつ非推奨マーク (zsh description) - docs/user/cli-reference.md: - コマンド体系図・エイリアス・ショートカットを project 体系に更新 - 「project グループ」節を新設 (name 解決 / project list / --interactive / login・build が name を取らない理由 / 親シェル CWD 非汚染) - 「container グループ (非推奨)」節に置換 - docs/user/container-operations.md: - 冒頭に project 体系への移行注記、scale/logs 例を project 形へ、 project list の横断一覧 vs project ps の単体表示の役割整理を追記 - README.md / docs/user/getting-started.md: 残存する container 直接形を project へ - CHANGELOG.md: Unreleased に PLAN06 (Added: project 群 / Changed: container 非推奨) - tests/cli/test_completion.py 新規 (bash 補完を source した動作検証 8件 + zsh 静的内容/構文チェック。zsh 未インストール環境は skip) pytest: 374 passed, 1 skipped (zsh) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent a532ff8 commit d8b520b

8 files changed

Lines changed: 423 additions & 50 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
## [Unreleased]
66

77
### Added
8+
- **`devbase project` サブコマンド群を新設**しました (PLAN06)。CWD に依存せずプロジェクト名でコンテナ操作ができます。
9+
- `devbase project up/down/ps/logs/scale [name]` で、任意のディレクトリから `$DEVBASE_ROOT/projects/<name>` を対象に操作できます。名前解決はラッパー (`bin/devbase`) が対象ディレクトリへ `cd` してから実行するため、シェル実装の `build` を含む全操作が名前指定で成立します(呼び出し元シェルの作業ディレクトリは変わりません)。存在しない名前はエラーになり候補が提示されます。
10+
- `devbase project list [--interactive|-i]``$DEVBASE_ROOT/projects/` 配下を `NAME` / `PLUGIN` / `STATUS` の一覧表示します。`PLUGIN` 列はシンボリックリンク先から解決するため、PLAN04 の同名衝突 suffix(例 `carmo.takemi`)が付いていても正しいプラグイン名を表示します。`--interactive` では一覧から番号で選択して起動でき、非対話環境では番号入力にフォールバックします。
11+
- トップレベルシノニム `devbase up/down/ps/scale [name]` / `devbase build [image]` / `devbase login [index]` / `devbase list` を整備しました(`logs` はシノニムを持たず `devbase project logs` のみ)。
12+
- bash / zsh のシェル補完に `project` グループとプロジェクト名補完(`$DEVBASE_ROOT/projects/` 配下を列挙)を追加しました。
13+
- 利用者向けドキュメント [`docs/user/cli-reference.md`](docs/user/cli-reference.md) / [`docs/user/container-operations.md`](docs/user/container-operations.md)`project` 体系に更新しました。
814
- `devbase env export` / `devbase env import`**S3 URI (`s3://bucket/key`) を入出力先として指定**できるようになりました (PLAN03-1 PR3)。
915
- 既定でオブジェクト単位の SSE (`aws:kms` または `AES256`) を強制し、export 時はバケット側のデフォルト暗号化も `GetBucketEncryption` で事前確認します。
1016
- 暗号化が未設定のバケットへ export する場合は `--unsafe-allow-unencrypted-bucket` の明示が必要です (オブジェクト単位の SSE はこのフラグに関係なく常に付与されます)。
@@ -15,6 +21,7 @@
1521
- README と環境変数ガイドからのリンクも追加しました。
1622

1723
### Changed
24+
- **`devbase container` グループを非推奨化**しました (PLAN06)。`devbase container <sub>``devbase project <sub>` のエイリアスとして当面動作しますが、実行時に非推奨警告を表示します(移行期間後のリリースで削除予定)。`[name]` 指定や `list` などの新機能は `project` 側のみで提供されます。トップレベルショートカット (`devbase up` 等) の転送先も `container` から `project` へ変更しました。
1825
- `gs://` (GCS) スキームは **PLAN03-1 PR4 廃案** により対応しません。指定すると明示的なエラーメッセージで失敗します (旧: "未実装")。
1926
- `lib/devbase/env/` 配下の export / import モジュールをリファクタリングしました (PLAN03-1 PR5)。公開 API (`ExportOptions`, `ImportOptions`, `export`, `import_bundle`) に互換性のない変更はありません。
2027
- export / import で重複していた passphrase 読み取り / 既定鍵 fallback / セキュアな bytes 書き込みを `io_common.py` に集約。

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ devbaseは、Docker Composeを使った再現性の高い開発環境を提供
1111
- **Pluginベースのプロジェクト管理**: 外部リポジトリからプロジェクト設定をインストール・更新
1212
- **コンテナ化された開発環境**: Docker Composeベースで再現性の高い環境を提供
1313
- **豊富なツールセット**: Docker CLI、AWS CLI、gcloud SDK、Terraform、Node.js、AI CLIツールがプリインストール
14-
- **複数コンテナの並行開発**: `devbase container scale`で既存コンテナを再起動せずにスケール可能
14+
- **複数コンテナの並行開発**: `devbase project scale`で既存コンテナを再起動せずにスケール可能
1515
- **データ永続化**: 名前付きボリュームでコンテナ再起動後もデータを保持
1616
- **スナップショット管理**: `/home/ubuntu` 共通ボリュームの増分バックアップ・復元・世代管理
1717
- **環境変数の自動収集**: `devbase env init`でAWS/Git/GCP認証情報を対話的に設定

docs/user/cli-reference.md

Lines changed: 128 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,38 +11,47 @@ graph TD
1111
A[devbase] --> B[init]
1212
A --> C[status]
1313
A --> H[shell-rc]
14-
A --> D[container / ct]
14+
A --> D[project]
1515
A --> E[env]
1616
A --> F[plugin / pl]
1717
A --> G[snapshot / ss]
18-
D --> D1[up / down / login / ps / logs / scale / build]
18+
D --> D1["up / down / login / ps / logs / scale / build [name]"]
19+
D --> D2["list [--interactive]"]
1920
E --> E1[init / sync / list / set / get / delete / edit / project]
2021
F --> F1[list / install / uninstall / update / info / sync]
2122
F --> F2[repo add / repo remove / repo list / repo refresh]
2223
G --> G1[create / list / restore / copy / delete / rotate]
2324
```
2425

26+
> **`container` グループは非推奨になりました。**`devbase container <sub>`
27+
> `devbase project <sub>` のエイリアスとして当面動作しますが、実行時に非推奨警告を
28+
> 表示します(移行期間後のリリースで削除予定)。新しいコマンドは `project` を使用してください。
29+
2530
### グループエイリアス
2631

2732
各グループには短縮形が用意されています。
2833

29-
| グループ名 | エイリアス |
30-
|-----------|-----------|
31-
| `container` | `ct` |
32-
| `plugin` | `pl` |
33-
| `snapshot` | `ss` |
34+
| グループ名 | エイリアス | 備考 |
35+
|-----------|-----------|------|
36+
| `plugin` | `pl` | |
37+
| `snapshot` | `ss` | |
38+
| `container` | `ct` | **非推奨**`project` へ移行してください) |
3439

3540
### ショートカットコマンド
3641

37-
頻繁に使用するコンテナ操作はトップレベルから直接実行できます。これらは `container` グループに自動転送されます。
42+
頻繁に使用するプロジェクト操作はトップレベルから直接実行できます。これらは `project` グループに自動転送されます。
3843

3944
| ショートカット | 転送先 |
4045
|--------------|--------|
41-
| `devbase up` | `devbase container up` |
42-
| `devbase down` | `devbase container down` |
43-
| `devbase login` | `devbase container login` |
44-
| `devbase build` | `devbase container build` |
45-
| `devbase ps` | `devbase container ps` |
46+
| `devbase up [name]` | `devbase project up [name]` |
47+
| `devbase down [name]` | `devbase project down [name]` |
48+
| `devbase login [index]` | `devbase project login [index]` |
49+
| `devbase build [image]` | `devbase project build [image]` |
50+
| `devbase ps [name]` | `devbase project ps [name]` |
51+
| `devbase scale [name] <num>` | `devbase project scale [name] <num>` |
52+
| `devbase list` | `devbase project list` |
53+
54+
> **Note:** `logs` はトップレベルシノニムを持ちません。`devbase project logs` を使用してください。
4655
4756
### ユニークプレフィックスマッチング
4857

@@ -113,17 +122,43 @@ source "$(./bin/devbase shell-rc)"
113122

114123
> **⚠ 引用符は必須**: `source $(devbase shell-rc)` のように引用符を省くと、ホームディレクトリ名に空白を含む環境(例: `/Users/foo bar/.zshrc`)で word splitting が起き `source` が失敗します。必ず `source "$(devbase shell-rc)"` の形で書いてください。
115124
116-
## container (ct) グループ
125+
## project グループ
126+
127+
プロジェクト(コンテナ)のライフサイクル管理と一覧表示を行うコマンド群です。
128+
129+
### プロジェクト名指定(CWD 非依存)
130+
131+
`up` / `down` / `ps` / `logs` / `scale` は省略可能な `[name]` 引数を取ります。`[name]`
132+
を指定すると、**現在のディレクトリに依存せず** `$DEVBASE_ROOT/projects/<name>` を対象に
133+
操作できます。
134+
135+
```bash
136+
# 任意のディレクトリから adminer プロジェクトを起動
137+
devbase project up adminer
138+
139+
# 省略時は従来どおりカレントディレクトリのプロジェクトを対象にする
140+
cd $DEVBASE_ROOT/projects/adminer && devbase project up
141+
```
142+
143+
- `<name>``$DEVBASE_ROOT/projects/` 配下のプロジェクト名(`devbase project list` で確認可能)
144+
- 存在しない名前を指定するとエラーになり、利用可能なプロジェクト候補が表示されます
145+
- 名前解決はラッパー (`bin/devbase`) が対象ディレクトリへ `cd` してから実行します。
146+
これにより `build`(シェル実装)を含む全操作が名前指定で成立します
147+
- `devbase` は PATH 上の実行ファイルとして子プロセスで起動されるため、この `cd`
148+
**呼び出し元シェルの作業ディレクトリを変えることはありません**
117149

118-
コンテナのライフサイクル管理を行うコマンド群です。
150+
> **`login` / `build``[name]` を取りません。** これらの単一引数はそれぞれ `index` /
151+
> `image` であり、`[name]` を許すと `project login 2` / `project build web` が誤解釈される
152+
> ため除外しています(トップレベルシノニム `devbase build <name>` のみラッパーの存在性判定で
153+
> 名前解決されます)。
119154
120-
### `devbase container up`
155+
### `devbase project up`
121156

122157
コンテナを起動します。
123158

124159
```
125-
devbase container up
126-
devbase up
160+
devbase project up [name]
161+
devbase up [name]
127162
```
128163

129164
- 起動時にスナップショットを自動作成(新世代 or 差分追加)
@@ -136,23 +171,23 @@ devbase up
136171
(前回 pull 日時は `${DEVBASE_ROOT}/.cache/pulls/<image>` の touch-file mtime で判定)
137172
- 閾値は `DEVBASE_IMAGE_MAX_AGE_DAYS` 環境変数で上書き可能(既定 7、不正値は警告して既定値)
138173

139-
### `devbase container down`
174+
### `devbase project down`
140175

141176
コンテナを停止・削除します。
142177

143178
```
144-
devbase container down
145-
devbase down
179+
devbase project down [name]
180+
devbase down [name]
146181
```
147182

148183
- 停止時にスナップショットのローテーションを自動実行
149184

150-
### `devbase container login`
185+
### `devbase project login`
151186

152187
コンテナにログインします。
153188

154189
```
155-
devbase container login [index]
190+
devbase project login [index]
156191
devbase login [index]
157192
```
158193

@@ -168,25 +203,26 @@ devbase login
168203
devbase login 2
169204
```
170205

171-
### `devbase container ps`
206+
### `devbase project ps`
172207

173-
コンテナの状態を表示します。
208+
対象プロジェクトのコンテナ状態を `docker compose ps` で表示します。複数プロジェクトの
209+
横断一覧は `devbase project list` を使用してください。
174210

175211
```
176-
devbase container ps [-a]
177-
devbase ps [-a]
212+
devbase project ps [name] [-a]
213+
devbase ps [name] [-a]
178214
```
179215

180216
| オプション | 説明 |
181217
|-----------|------|
182218
| `-a` | 停止中のコンテナも表示 |
183219

184-
### `devbase container logs`
220+
### `devbase project logs`
185221

186-
コンテナのログを表示します。
222+
コンテナのログを表示します(トップレベルシノニムはありません)
187223

188224
```
189-
devbase container logs [-f] [--tail N]
225+
devbase project logs [name] [-f] [--tail N]
190226
```
191227

192228
| オプション | 説明 |
@@ -196,42 +232,96 @@ devbase container logs [-f] [--tail N]
196232

197233
```bash
198234
# 最新50行をリアルタイムで追跡
199-
devbase container logs -f --tail 50
235+
devbase project logs -f --tail 50
200236
```
201237

202-
### `devbase container scale`
238+
### `devbase project scale`
203239

204240
既存のコンテナを再起動せずにスケールします。
205241

206242
```
207-
devbase container scale <num>
243+
devbase project scale [name] <num>
244+
devbase scale [name] <num>
208245
```
209246

210247
| パラメータ | 必須 | 説明 |
211248
|-----------|------|------|
249+
| `name` | いいえ | 対象プロジェクト名(省略時はカレント) |
212250
| `<num>` | はい | コンテナ数 |
213251

214252
```bash
215253
# コンテナを3台に増やす
216-
devbase container scale 3
254+
devbase project scale 3
217255

218-
# コンテナを1台に減らす
219-
devbase container scale 1
256+
# 任意のディレクトリから adminer を3台に
257+
devbase project scale adminer 3
220258
```
221259

222-
### `devbase container build`
260+
### `devbase project build`
223261

224262
コンテナイメージをビルドします。
225263

226264
```
227-
devbase container build [image]
265+
devbase project build [image]
228266
devbase build [image]
229267
```
230268

231269
| パラメータ | 必須 | 説明 |
232270
|-----------|------|------|
233271
| `image` | いいえ | ビルドするイメージ名(省略時は全イメージ) |
234272

273+
### `devbase project list`
274+
275+
`$DEVBASE_ROOT/projects/` 配下のプロジェクトを `NAME` / `PLUGIN` / `STATUS` の一覧で
276+
表示します。
277+
278+
```
279+
devbase project list [--interactive|-i]
280+
devbase list [--interactive|-i]
281+
```
282+
283+
| オプション | 説明 |
284+
|-----------|------|
285+
| `--interactive` / `-i` | 一覧から番号で選択し、そのプロジェクトを `project up` で起動 |
286+
287+
```bash
288+
# 一覧表示
289+
devbase list
290+
291+
# 一覧から選んで起動(非対話環境では番号入力にフォールバック)
292+
devbase list -i
293+
```
294+
295+
出力例:
296+
297+
```
298+
NAME PLUGIN STATUS
299+
adminer adminer running (2 containers)
300+
carmo carmo stopped
301+
carmo.takemi carmo-fork stopped
302+
```
303+
304+
- `PLUGIN` 列はシンボリックリンク先から解決するため、PLAN04 の同名衝突 suffix
305+
(例 `carmo.takemi`)が付いていても正しいプラグイン名を表示します
306+
- `STATUS``running (N containers)` / `stopped` / `unknown`(docker 未起動・
307+
`compose.yml` 不在等で判定不能)のいずれか
308+
309+
## container (ct) グループ(非推奨)
310+
311+
> **非推奨:** `container` グループは `project` グループへ移行しました。`devbase container
312+
> <sub>` は当面 `devbase project <sub>` のエイリアスとして動作しますが、実行時に非推奨警告を
313+
> 表示します(移行期間後のリリースで削除予定)。`[name]` 指定や `list` などの新機能は
314+
> `project` 側のみで提供されます。
315+
316+
```bash
317+
# 旧(非推奨・警告が出ます)
318+
devbase container up
319+
320+
# 新(推奨)
321+
devbase project up
322+
devbase up
323+
```
324+
235325
## env グループ
236326

237327
環境変数の管理を行うコマンド群です。詳細は [環境変数ガイド](environment-variables.md) を参照してください。

docs/user/container-operations.md

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
devbase のコンテナ管理機能について、ライフサイクル、並行開発、ボリューム構造、イメージ階層を解説します。
44

5+
> **コマンド体系について:** コンテナ操作は `devbase project <sub>` グループ(および
6+
> トップレベルショートカット `devbase up` 等)で行います。旧 `devbase container <sub>`
7+
> 非推奨となり、`project` へのエイリアスとして警告付きで当面動作します。`project` では
8+
> `up` / `down` / `ps` / `logs` / `scale``[name]` を指定することで **任意のディレクトリ
9+
> から** 対象プロジェクトを操作できます。プロジェクト一覧は `devbase project list` を参照
10+
> してください。詳細は [CLI リファレンス](cli-reference.md#project-グループ) を参照。
11+
512
## コンテナライフサイクル
613

714
devbase のコンテナは以下のライフサイクルで管理されます。
@@ -75,10 +82,13 @@ CONTAINER_SCALE=2
7582

7683
```bash
7784
# コンテナを3台に増やす(既存コンテナは再起動しない)
78-
devbase container scale 3
85+
devbase project scale 3
7986

8087
# コンテナを1台に減らす
81-
devbase container scale 1
88+
devbase project scale 1
89+
90+
# 任意のディレクトリから adminer を3台に
91+
devbase project scale adminer 3
8292
```
8393

8494
### 各コンテナへのログイン
@@ -216,15 +226,28 @@ devbase ps -a
216226

217227
```bash
218228
# 最新のログを表示
219-
devbase container logs
229+
devbase project logs
220230

221231
# リアルタイムでログを追跡
222-
devbase container logs -f
232+
devbase project logs -f
223233

224234
# 末尾100行のみ追跡
225-
devbase container logs -f --tail 100
235+
devbase project logs -f --tail 100
236+
```
237+
238+
### プロジェクト一覧
239+
240+
```bash
241+
# 全プロジェクトを NAME / PLUGIN / STATUS で一覧表示
242+
devbase list
243+
244+
# 一覧から選択して起動(非対話環境では番号入力にフォールバック)
245+
devbase list -i
226246
```
227247

248+
`devbase project ps` が「対象プロジェクト 1 つのコンテナ状態」を表示するのに対し、
249+
`devbase list` は「全プロジェクトの横断一覧」を表示します。
250+
228251
### 環境の全体像
229252

230253
```bash

docs/user/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ devbase login
163163
devbase ps
164164

165165
# ログの確認
166-
devbase container logs -f
166+
devbase project logs -f
167167

168168
# 2番目のコンテナにログイン(並行作業)
169169
devbase login 2

0 commit comments

Comments
 (0)