fix(codex-deploy): 保留舊 hooks 快取相容路徑

This commit is contained in:
2026-08-28 18:18:28 +08:00
parent fc446bfe55
commit 90b89047e3
6 changed files with 47 additions and 7 deletions
+40
View File
@@ -62,6 +62,44 @@ cli_bin() { # $1=CLI 代號
esac
}
codex_plugin_cache_root() { # $1=plugin name
printf '%s/plugins/cache/jsc/%s\n' "${CODEX_HOME:-$HOME/.codex}" "$1"
}
codex_plugin_versions() { # $1=plugin name
_dir=$(codex_plugin_cache_root "$1")
[ -d "$_dir" ] || return 0
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)
[ -d "$_dir" ] || return 1
for _p in "$_dir"/*; do
[ -d "$_p" ] || continue
[ ! -L "$_p" ] || continue
[ -f "$_p/hooks/session-timer.sh" ] || continue
printf '%s\n' "$_p"
done | sort -V | tail -n1
}
codex_preserve_old_hooks_cache() { # stdin=更新前版本清單
[ "$DRYRUN" = 1 ] && return 0
_new=$(codex_latest_hooks_dir || true)
[ -n "$_new" ] || return 0
_root=$(codex_plugin_cache_root jsc-hooks)
while IFS= read -r _version; do
[ -n "$_version" ] || continue
_old="$_root/$_version"
[ "$_old" != "$_new" ] || continue
if [ -e "$_old" ] && [ ! -L "$_old" ]; then
continue
fi
ln -sfn "$_new" "$_old" || continue
printf 'compat\tcodex\t%s\t%s\n' "$_old" "$_new"
done
}
usage() {
echo "用法:deploy.sh [-n] {install|update|uninstall} {claude|codex|copilot|antigravity|kiro} {domain} [domain...]" >&2
exit 2
@@ -220,8 +258,10 @@ deploy_codex() {
for d in $DOMAINS; do run "$bin" plugin add "jsc-$d@jsc"; done
;;
update)
_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
;;
uninstall)
for d in $DOMAINS; do run "$bin" plugin remove "jsc-$d@jsc"; done