fix(codex-deploy): 保留 CLI 自身快取相容路徑
This commit is contained in:
+19
-8
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user