#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" ROOT_DIR="$(dirname "$SCRIPT_DIR")" HOST="" PORT="8080" if [ $# -ge 1 ] && [ -n "$1" ]; then ARG="$1" if [[ "$ARG" == *:* ]]; then HOST="${ARG%:*}" PORT="${ARG##*:}" else PORT="$ARG" fi fi # Stop any existing spine daemon emacsclient --socket-name=spine --eval '(kill-emacs)' 2>/dev/null || true # Build emacs args EMACS_ARGS=(emacs --quick --daemon=spine) if [ -n "$HOST" ]; then EMACS_ARGS+=(--eval "(setq spine-host \"$HOST\")") fi EMACS_ARGS+=(--eval "(setq spine-port $PORT)") EMACS_ARGS+=(--load "$ROOT_DIR/spine.el") "${EMACS_ARGS[@]}" DISPLAY_HOST="${HOST:-localhost}" echo "Spine running at http://${DISPLAY_HOST}:${PORT}/hello" echo "Stop: emacsclient --socket-name=spine --eval '(kill-emacs)'"