🏷️ Priorité : HAUTE | Type : Bug portabilité
Problème
Les scripts utilisent readlink -f (GNU coreutils) qui n'existe pas sur macOS/BSD :
$ readlink -f /usr/local/bin/leann
readlink: illegal option -- f
Aussi, which est utilisé au lieu de command -v (POSIX).
Localisation
Fichier 1 : apps/claude_code_data/hooks/leann-index-sessions.sh, ligne 15
LEANN_BIN=$(readlink -f "$(which leann)" 2>/dev/null) || { ... }
Fichier 2 : apps/claude_code_data/skill/scripts/setup.sh — même pattern si présent
Correction attendue
# AVANT (GNU-only) :
LEANN_BIN=$(readlink -f "$(which leann)" 2>/dev/null)
# APRÈS (POSIX-portable) :
LEANN_BIN=$(command -v leann) || { die "leann not found in PATH"; }
# Résolution sans readlink -f :
LEANN_BIN=$(cd "$(dirname "$LEANN_BIN")" && pwd -P)/$(basename "$LEANN_BIN")
Ou avec helper :
resolve_path() {
local target="$1"
while [ -L "$target" ]; do
local dir=$(dirname "$target")
target=$(readlink "$target") # sans -f = POSIX
[[ "$target" != /* ]] && target="$dir/$target"
done
echo "$(cd "$(dirname "$target")" && pwd -P)/$(basename "$target")"
}
⚠️ Attention
La résolution sert ensuite à déduire LEANN_REPO :
LEANN_REPO=$(dirname "$(dirname "$(dirname "$LEANN_BIN")")")
Vérifier que LEANN_REPO pointe toujours au bon endroit après le fix.
Critères de succès
🏷️ Priorité : HAUTE | Type : Bug portabilité
Problème
Les scripts utilisent
readlink -f(GNU coreutils) qui n'existe pas sur macOS/BSD :Aussi,
whichest utilisé au lieu decommand -v(POSIX).Localisation
Fichier 1 :
apps/claude_code_data/hooks/leann-index-sessions.sh, ligne 15Fichier 2 :
apps/claude_code_data/skill/scripts/setup.sh— même pattern si présentCorrection attendue
Ou avec helper :
La résolution sert ensuite à déduire
LEANN_REPO:LEANN_REPO=$(dirname "$(dirname "$(dirname "$LEANN_BIN")")")Vérifier que LEANN_REPO pointe toujours au bon endroit après le fix.
Critères de succès
whichremplacé parcommand -vreadlink -fremplacé par alternative POSIX