fix(codex-deploy): 保留 CLI 自身快取相容路徑

This commit is contained in:
2026-08-28 18:31:04 +08:00
parent ca58604afc
commit 5e4c413dec
6 changed files with 25 additions and 14 deletions
+19 -8
View File
@@ -72,22 +72,26 @@ codex_plugin_versions() { # $1=plugin name
find "$_dir" -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -exec basename {} \; 2>/dev/null | sort -V
}
codex_latest_hooks_dir() {
_dir=$(codex_plugin_cache_root jsc-hooks)
codex_latest_plugin_dir() { # $1=plugin name $2=required file under version dir
_plugin="$1"
_required="$2"
_dir=$(codex_plugin_cache_root "$_plugin")
[ -d "$_dir" ] || return 1
for _p in "$_dir"/*; do
[ -d "$_p" ] || continue
[ ! -L "$_p" ] || continue
[ -f "$_p/hooks/session-timer.sh" ] || continue
[ -f "$_p/$_required" ] || continue
printf '%s\n' "$_p"
done | sort -V | tail -n1
}
codex_preserve_old_hooks_cache() { # stdin=更新前版本清單
codex_preserve_old_plugin_cache() { # $1=plugin name $2=required file under version dir;stdin=更新前版本清單
[ "$DRYRUN" = 1 ] && return 0
_new=$(codex_latest_hooks_dir || true)
_plugin="$1"
_required="$2"
_new=$(codex_latest_plugin_dir "$_plugin" "$_required" || true)
[ -n "$_new" ] || return 0
_root=$(codex_plugin_cache_root jsc-hooks)
_root=$(codex_plugin_cache_root "$_plugin")
while IFS= read -r _version; do
[ -n "$_version" ] || continue
_old="$_root/$_version"
@@ -258,10 +262,17 @@ deploy_codex() {
for d in $DOMAINS; do run "$bin" plugin add "jsc-$d@jsc"; done
;;
update)
_old_cli_versions=$(codex_plugin_versions jsc-cli)
_old_hooks_versions=$(codex_plugin_versions jsc-hooks)
run "$bin" plugin marketplace upgrade jsc
for d in $DOMAINS; do check_requires "$d" && run "$bin" plugin add "jsc-$d@jsc"; done
printf '%s\n' "$_old_hooks_versions" | codex_preserve_old_hooks_cache
for d in $DOMAINS; do
check_requires "$d" && run "$bin" plugin add "jsc-$d@jsc"
if [ "$d" = cli ]; then
printf '%s\n' "$_old_cli_versions" | codex_preserve_old_plugin_cache jsc-cli tools/check-requires.sh
elif [ "$d" = hooks ]; then
printf '%s\n' "$_old_hooks_versions" | codex_preserve_old_plugin_cache jsc-hooks hooks/session-timer.sh
fi
done
;;
uninstall)
for d in $DOMAINS; do run "$bin" plugin remove "jsc-$d@jsc"; done