Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
29fb0fd
Test: open_editor の例の作成者の個人のプロジェクト名を myapp-ml に置き換える (#365)
takemi-ohama Oct 15, 2026
bd73624
Merge pull request #492 from devbasex/feat/issue-365-m8e
takemi-ohama Oct 15, 2026
6de3a40
Refactor: ensure_volumes と VolumeManager から使われない project_name を外す (#490)
takemi-ohama Oct 15, 2026
d817b33
Refactor: VS Code Server の片付けを選別規則ごとの関数に分ける (#490)
takemi-ohama Oct 15, 2026
3a55f43
Merge pull request #493 from devbasex/feat/issue-490-m8e
takemi-ohama Oct 15, 2026
c6ac5fd
Test: bash の補完の各分岐の候補を現状固定する (#452)
takemi-ohama Oct 15, 2026
588c56e
Refactor: env sync の AWS の計画・ホームのパス・bash の補完の重なりを 1 か所にする (#452)
takemi-ohama Oct 15, 2026
66b83b3
Refactor: テストの補助の重なりを 1 か所にし、偽の OpenBao の do_GET を分ける (#452)
takemi-ohama Oct 15, 2026
51c4ac9
Merge pull request #494 from devbasex/feat/issue-452-m8e
takemi-ohama Oct 15, 2026
e74b60a
Refactor: introduce_parameter_object — lib/devbase/volume/compose.py#…
takemi-ohama Oct 15, 2026
cf035e0
Refactor: consolidate_duplication — etc/devbase-completion.bash#_devb…
takemi-ohama Oct 15, 2026
2774536
Refactor: extract_method — lib/devbase/commands/env.py#cmd_env_init
takemi-ohama Oct 15, 2026
3d82b4d
Refactor: extract_method — tests/cli/zsh_completion_harness.py#run_co…
takemi-ohama Oct 15, 2026
7b95548
Docs: vscode-server-volume.md のテストの表を ensure_volumes の引数の削除(#490)に合わせる
takemi-ohama Oct 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 52 additions & 20 deletions containers/base/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -652,24 +652,14 @@ devbase_remove_vscode_server_path() {
return 0
}

# 共通のボリュームの bin/ を片付ける (#463)。消すのは次の 3 種だけで、bin/ のほかの
# もの・~/.vscode-server の bin 以外には触らない。終了コードは常に 0。
#
# 1. 残す版の数を超えた古い版。版は 40 桁の 16 進の名前で product.json を持つ
# ディレクトリ。product.json の更新時刻の新しい順 (同じなら名前の順) に並べる。
# product.json は片付けが書き換えないため、同時に走る片付けどうしで並びが同じに
# なり、残る版が残す数より減らない (ディレクトリの更新時刻では減った)
# 2. 残った版の直下の入れ子の本体 (product.json を持つディレクトリ)。本体の同時の
# 展開で、遅れた側の中身が bin/<commit>/vscode-server-linux-<arch>/ に残ったもの
# 3. 60 分より古い展開の途中のディレクトリ bin/<commit>_<数字>
#
# シンボリックリンクは辿らない。bin/ 自身・bin/<commit>・入れ子がリンクなら、版にも
# 片付けの対象にも数えない。リンク先の bin の外のものを消さないためである
devbase_prune_vscode_server_bin() {
local bin="$1" keep="${2:-$DEVBASE_VSCODE_SERVER_KEEP}"
local entry name mtime listing="" count=0 kept=() nested

[ -d "$bin" ] && [ ! -L "$bin" ] || return 0
# bin/ の版のうち、残す版の数を超えた古い版を消し、残した版の名前を新しい順に 1 行ずつ
# 標準出力へ出す (#463 の片付けの規則 1)。版は 40 桁の 16 進の名前で product.json を
# 持つディレクトリ。product.json の更新時刻の新しい順 (同じなら名前の順) に並べる。
# product.json は片付けが書き換えないため、同時に走る片付けどうしで並びが同じになり、
# 残る版が残す数より減らない (ディレクトリの更新時刻では減った)
devbase_prune_vscode_server_old_versions() {
local bin="$1" keep="$2"
local entry name mtime listing="" count=0

for entry in "$bin"/*; do
name="${entry##*/}"
Expand All @@ -684,13 +674,24 @@ devbase_prune_vscode_server_bin() {
[ -n "$name" ] || continue
count=$((count + 1))
if [ "$count" -le "$keep" ]; then
kept+=("$name")
printf '%s\n' "$name"
else
devbase_remove_vscode_server_path "${bin}/${name}"
fi
done < <(printf '%s' "$listing" | LC_ALL=C sort -k1,1nr -k2,2)

for name in "${kept[@]}"; do
return 0
}

# 残した版の直下の入れ子の本体 (product.json を持つディレクトリ) を消す (#463 の片付けの
# 規則 2)。本体の同時の展開で、遅れた側の中身が bin/<commit>/vscode-server-linux-<arch>/
# に残ったもの。残した版の名前は標準入力から 1 行ずつ読む
devbase_prune_vscode_server_nested() {
local bin="$1"
local name nested

while IFS= read -r name; do
[ -n "$name" ] || continue
# 数えた後にリンクへ置き換わっていれば、リンク先を辿らない
[ ! -L "$bin" ] && [ ! -L "${bin}/${name}" ] || continue
for nested in "${bin}/${name}"/*/; do
Expand All @@ -701,6 +702,15 @@ devbase_prune_vscode_server_bin() {
done
done

return 0
}

# 60 分より古い展開の途中のディレクトリ bin/<commit>_<数字> を消す (#463 の片付けの
# 規則 3)
devbase_prune_vscode_server_partial() {
local bin="$1"
local entry name

while IFS= read -r entry; do
name="${entry##*/}"
[[ "$name" =~ ^[0-9a-f]{40}_[0-9]+$ ]] || continue
Expand All @@ -711,6 +721,28 @@ devbase_prune_vscode_server_bin() {
return 0
}

# 共通のボリュームの bin/ を片付ける (#463)。消すのは次の 3 種だけで、bin/ のほかの
# もの・~/.vscode-server の bin 以外には触らない。終了コードは常に 0。
#
# 1. 残す版の数を超えた古い版 (devbase_prune_vscode_server_old_versions)
# 2. 残った版の直下の入れ子の本体 (devbase_prune_vscode_server_nested)
# 3. 60 分より古い展開の途中のディレクトリ (devbase_prune_vscode_server_partial)
#
# シンボリックリンクは辿らない。bin/ 自身・bin/<commit>・入れ子がリンクなら、版にも
# 片付けの対象にも数えない。リンク先の bin の外のものを消さないためである
devbase_prune_vscode_server_bin() {
local bin="$1" keep="${2:-$DEVBASE_VSCODE_SERVER_KEEP}"
local kept

[ -d "$bin" ] && [ ! -L "$bin" ] || return 0

kept=$(devbase_prune_vscode_server_old_versions "$bin" "$keep")
devbase_prune_vscode_server_nested "$bin" <<< "$kept"
devbase_prune_vscode_server_partial "$bin"

return 0
}

# ===================================================================
# PLAN39: GCP の認証モードと gcloud / gws の設定ディレクトリ
# ===================================================================
Expand Down
2 changes: 1 addition & 1 deletion docs/specifications/vscode-server-volume.md
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ Dev Containers の既定の拡張は、作り直しの後の attach で入り直

| 観点 | 置き場 |
| --- | --- |
| `ensure_volumes` を違うプロジェクト名・違うグループ・scale 2 で呼んでも、共通の VS Code Server ボリュームの作成は 1 回で名前は同じこと。あれば作らず、インスタンスごとの VS Code Server のボリュームを作らないこと | `tests/volume/test_manager_vscode.py` |
| `ensure_volumes` を違うグループ・scale 2 で呼んでも、共通の VS Code Server ボリュームの作成は 1 回で名前は同じこと。あれば作らず、インスタンスごとの VS Code Server のボリュームを作らないこと | `tests/volume/test_manager_vscode.py` |
| 共通の名前が `devbase_vscode_` で始まらず、旧形式の一覧が共通の名前の混ざった一覧から旧形式だけを名前の順で返すこと。一覧の失敗で空を返すこと | 同上 |
| scale 2 の生成物の各 dev インスタンスに、同じ共通の VS Code Server ボリュームが `/home/ubuntu/.vscode-server/bin` に 1 つ付き、`~/.vscode-server` と `~/.vscode-server/data` へのマウントが無いこと。`volumes:` に `external: true` で 1 回だけあること | `tests/volume/test_compose_vscode.py` |
| dev サービスが `~/.vscode-server` か `~/.vscode-server/bin` を宣言していれば足さず、`~/.vscode-server/data` だけなら `bin` に足すこと。生成物に旧形式の名前が無いこと | 同上 |
Expand Down
Loading
Loading