Files
huskies/script/local-release
T

44 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Install huskies locally on macOS: the underlying binary + a codesign-heal wrapper.
#
# After a `cp` or download the binary loses its ad-hoc signature and macOS
# SIGKILLs it silently on Apple Silicon. This script installs the binary as
# ~/bin/huskies-bin and installs a thin wrapper at ~/bin/huskies that
# re-signs the underlying binary whenever codesign validation fails, then
# execs it. Normal launches (already signed) are silent and zero-overhead.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
BINARY_PATH="${SCRIPT_DIR}/target/release/huskies"
BIN_DIR="${HOME}/bin"
UNDERLYING="${BIN_DIR}/huskies-bin"
WRAPPER="${BIN_DIR}/huskies"
if [ ! -f "${BINARY_PATH}" ]; then
echo "Error: binary not found at ${BINARY_PATH}"
echo "Run: cargo build --release"
exit 1
fi
mkdir -p "${BIN_DIR}"
cp "${BINARY_PATH}" "${UNDERLYING}"
chmod +x "${UNDERLYING}"
echo "==> Installed binary: ${UNDERLYING}"
cat > "${WRAPPER}" << 'WRAPPER_EOF'
#!/usr/bin/env bash
# Codesign-heal wrapper — re-signs ~/bin/huskies-bin if the signature is
# missing or invalid, then execs the binary. Logs only when it re-signs.
BIN="${HOME}/bin/huskies-bin"
if ! codesign --verify --quiet "${BIN}" 2>/dev/null; then
codesign -s - "${BIN}"
echo "[codesign-heal] re-signed ~/bin/huskies-bin" >&2
fi
exec "${BIN}" "$@"
WRAPPER_EOF
chmod +x "${WRAPPER}"
echo "==> Installed wrapper: ${WRAPPER}"