fix(b3): eliminate command -v herdr bash function false positive in preflight checks (100% PASS)
This commit is contained in:
+43
-1
@@ -50,9 +50,51 @@ _HERDR_SKILLS_BIN_PATTERN="${_HERDR_SKILLS_BIN_PATTERN:-/.agents/skills/.bin}"
|
||||
|
||||
HERDR_SESSION_NAME="${HERDR_SESSION_NAME:-default}"
|
||||
|
||||
_canonical_file() {
|
||||
local p="$1" t d b i=0
|
||||
while [ -L "$p" ] && [ "$i" -lt 40 ]; do
|
||||
t="$(readlink "$p" 2>/dev/null)" || break
|
||||
case "$t" in
|
||||
/*) p="$t" ;;
|
||||
*) p="$(dirname "$p")/$t" ;;
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
d="$(cd -P "$(dirname "$p")" 2>/dev/null && pwd -P)" || return 1
|
||||
b="$(basename "$p")"
|
||||
printf '%s/%s\n' "$d" "$b"
|
||||
}
|
||||
|
||||
_is_shim_path() {
|
||||
case "/$1/" in
|
||||
*"/.mam/shim/"*|*-shim/*|*"$_HERDR_SHIM_DIR_PATTERN"*|*"$_HERDR_SKILLS_BIN_PATTERN"/*)
|
||||
return 0 ;;
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
|
||||
_resolve_real_herdr_path() {
|
||||
_REAL_HERDR_PATH="herdr"
|
||||
local dir cand save_ifs="$IFS" real_path=""
|
||||
IFS=:
|
||||
for dir in $PATH; do
|
||||
[ -n "$dir" ] || continue
|
||||
_is_shim_path "$dir" && continue
|
||||
[ -x "$dir/herdr" ] || continue
|
||||
cand="$(_canonical_file "$dir/herdr" 2>/dev/null)" || cand="$dir/herdr"
|
||||
[ -n "$cand" ] || cand="$dir/herdr"
|
||||
_is_shim_path "$cand" && continue
|
||||
real_path="$dir/herdr"
|
||||
break
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
[ -n "$real_path" ] || return 1
|
||||
_REAL_HERDR_PATH="$real_path"
|
||||
export _REAL_HERDR_PATH
|
||||
printf '%s\n' "$real_path"
|
||||
}
|
||||
|
||||
has_real_herdr() {
|
||||
_resolve_real_herdr_path >/dev/null 2>&1
|
||||
}
|
||||
|
||||
_init_herdr_isolation() {
|
||||
|
||||
Reference in New Issue
Block a user