#!/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
EMACS_ARGS=(emacs --quick --daemon=spine)

# If SPINE_ORG env var is set, override the org file path
if [ -n "${SPINE_ORG:-}" ]; then
  EMACS_ARGS+=(--eval "(setq spine-org-file \"$SPINE_ORG\")")
fi

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)'"
