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