#!/usr/bin/env sh # # dev-setup.sh - contributor bootstrap for the `move` repo. # # Use this when you have cloned the repo and want a working development # environment. End users should use `install.sh` (curl-pipeable) instead. # # Verifies Bun is installed, then runs `bun install` to fetch dependencies # (notably `@nut-tree-fork/nut-js`, which ships prebuilt native binaries # for darwin-arm64/x64, linux, and windows). # # This script is idempotent: re-running it just re-resolves the dependency # tree against the existing `bun.lock`. # # POSIX sh; no bashisms. Matches the style of install.sh / uninstall.sh. # Fail fast on any error or unset variable. (`pipefail` is bash-only and # not strictly needed here; this script doesn't pipe in failure-prone # ways.) set -eu # Operate at the repo root regardless of the caller's CWD. This script # lives under scripts/, so pop up one level to land at the project root # before running bun install. cd "$(dirname "$0")/.." echo "==> Checking for Bun..." if ! command -v bun >/dev/null 2>&1; then # Hard error rather than auto-install: keep the script's behavior # predictable and let the user pick their own install method. echo "Error: bun is not installed." >&2 echo " Install it from https://bun.sh (e.g. 'brew install oven-sh/bun/bun') and re-run." >&2 exit 1 fi echo " bun $(bun --version)" echo "==> Installing dependencies..." bun install echo echo "Done. Dev workflow:" echo " - 'bun run start' to run from the source tree." echo " - 'bun run test' to run the test suite." echo " - 'bun link' to install a global 'move' command pointed at this checkout." echo "End-user installer is install.sh (curl-pipeable from Gitea)." # macOS gates synthetic mouse events behind the Accessibility permission. # Without this hint, the first run silently fails to move the cursor and # the user has no obvious next step. if [ "$(uname)" = "Darwin" ]; then echo "Note: macOS will prompt for Accessibility permission on first mouse move." echo " Grant it under System Settings > Privacy & Security > Accessibility." fi