diff --git a/.claude/scripts/vault.sh b/.claude/scripts/vault.sh index fe2a700..51359bc 100644 --- a/.claude/scripts/vault.sh +++ b/.claude/scripts/vault.sh @@ -22,13 +22,20 @@ if [[ ! -f "$IDENTITY_FILE" ]]; then exit 1 fi -# Extract vault_path from identity.json using python (available on all platforms) +# Extract vault_path from identity.json — jq first, then Python with path conversion VAULT_ROOT="" -for py in py python3 python; do - if command -v "$py" >/dev/null 2>&1; then - VAULT_ROOT=$("$py" -c "import json,sys; d=json.load(open('$IDENTITY_FILE')); print(d.get('vault_path',''))" 2>/dev/null) && break - fi -done +if command -v jq >/dev/null 2>&1; then + VAULT_ROOT=$(jq -r '.vault_path // empty' "$IDENTITY_FILE" 2>/dev/null) +fi +if [[ -z "$VAULT_ROOT" ]]; then + IDENTITY_FILE_FOR_PY="$IDENTITY_FILE" + command -v cygpath >/dev/null 2>&1 && IDENTITY_FILE_FOR_PY=$(cygpath -m "$IDENTITY_FILE") + for py in py python3 python; do + if command -v "$py" >/dev/null 2>&1; then + VAULT_ROOT=$("$py" -c "import json,sys; d=json.load(open(r'$IDENTITY_FILE_FOR_PY')); print(d.get('vault_path',''))" 2>/dev/null) && break + fi + done +fi if [[ -z "$VAULT_ROOT" ]]; then echo "[ERROR] vault_path not set in $IDENTITY_FILE" >&2