diff --git a/scripts/sync-marketplace-mirror.sh b/scripts/sync-marketplace-mirror.sh index ffdb066..6c7fd17 100755 --- a/scripts/sync-marketplace-mirror.sh +++ b/scripts/sync-marketplace-mirror.sh @@ -60,7 +60,19 @@ fi if [[ "$CHECK" -eq 1 ]]; then if [[ ! -f "$DST" ]] || ! diff -q "$SRC" "$DST" >/dev/null 2>&1; then echo "DRIFT $DST: out of sync with .claude-plugin/marketplace.json" >&2 - echo "Fix: bash scripts/sync-marketplace-mirror.sh -- apm ships no output profile targeting this path, so \`apm pack\` does not refresh it. Expecting it to is exactly the drift this script and its pre-push hook exist to prevent." >&2 + # The runnable command gets a line to ITSELF, and the rationale gets its own + # echo. It was one line -- `Fix: bash scripts/sync-marketplace-mirror.sh -- + # apm ships no output profile...` -- which put the prose after `--`, the + # POSIX end-of-options marker, so copy-pasting the Fix line ran this script + # with ~24 stray argv entries: `${1:-}` was `--` (so CHECK stayed 0 and no + # shift happened), `[[ $# -eq 0 ]]` failed, and the tool meant to fix the + # drift answered with its own usage error and exit 1. The backticks around + # `apm pack` made it worse: the paste also command-substituted a real + # `apm pack` run before the script was even reached. Hence plain quotes + # below too. Keep the command alone on its line. + echo "Fix: run, from the repository root:" >&2 + echo " bash scripts/sync-marketplace-mirror.sh" >&2 + echo "Note: apm ships no output profile targeting this path, so 'apm pack' does not refresh it. Expecting it to is exactly the drift this script and its pre-push hook exist to prevent." >&2 exit 1 fi exit 0