amduat-api/scripts/dev_start_daemon.sh

79 lines
2.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_FILE="${ROOT_DIR}/config/env.local"
if [[ ! -f "${ENV_FILE}" ]]; then
ENV_FILE="${ROOT_DIR}/config/env.example"
fi
# shellcheck source=/dev/null
source "${ENV_FILE}"
STORE_ROOT="${STORE_ROOT:-${ROOT_DIR}/.amduat-asl}"
STORE_BACKEND="${STORE_BACKEND:-index}"
SPACE="${SPACE:-app1}"
SOCK="${SOCK:-${ROOT_DIR}/amduatd.sock}"
if [[ "${STORE_ROOT}" != /* ]]; then
STORE_ROOT="${ROOT_DIR}/${STORE_ROOT}"
fi
if [[ "${SOCK}" != /* ]]; then
SOCK="${ROOT_DIR}/${SOCK}"
fi
# Try common local build paths first, then PATH.
AMDUATD_BIN="${AMDUATD_BIN:-}"
if [[ -z "${AMDUATD_BIN}" ]]; then
for cand in \
"${ROOT_DIR}/vendor/amduat-api/build/amduatd" \
"${ROOT_DIR}/vendor/amduat-api/build-asan/amduatd"; do
if [[ -x "${cand}" ]]; then
AMDUATD_BIN="${cand}"
break
fi
done
if [[ -z "${AMDUATD_BIN}" ]] && command -v amduatd >/dev/null 2>&1; then
AMDUATD_BIN="$(command -v amduatd)"
fi
fi
ASL_BIN="${ASL_BIN:-}"
if [[ -z "${ASL_BIN}" ]]; then
for cand in \
"${ROOT_DIR}/vendor/amduat-api/vendor/amduat/build/amduat-asl" \
"${ROOT_DIR}/vendor/amduat-api/build/vendor/amduat/amduat-asl"; do
if [[ -x "${cand}" ]]; then
ASL_BIN="${cand}"
break
fi
done
if [[ -z "${ASL_BIN}" ]] && command -v amduat-asl >/dev/null 2>&1; then
ASL_BIN="$(command -v amduat-asl)"
fi
fi
if [[ -z "${AMDUATD_BIN}" || ! -x "${AMDUATD_BIN}" ]]; then
echo "missing amduatd binary; set AMDUATD_BIN" >&2
exit 1
fi
if [[ -z "${ASL_BIN}" || ! -x "${ASL_BIN}" ]]; then
echo "missing amduat-asl binary; set ASL_BIN" >&2
exit 1
fi
mkdir -p "${STORE_ROOT}"
if [[ "${STORE_BACKEND}" == "index" ]]; then
if ! "${ASL_BIN}" index state --root "${STORE_ROOT}" >/dev/null 2>&1; then
echo "initializing index-backed ASL store at ${STORE_ROOT}" >&2
"${ASL_BIN}" index init --root "${STORE_ROOT}"
fi
else
if ! "${ASL_BIN}" log inspect --root "${STORE_ROOT}" >/dev/null 2>&1; then
echo "initializing ASL store at ${STORE_ROOT}" >&2
"${ASL_BIN}" init --root "${STORE_ROOT}"
fi
fi
echo "starting amduatd: root=${STORE_ROOT} sock=${SOCK} backend=${STORE_BACKEND} space=${SPACE}" >&2
exec "${AMDUATD_BIN}" --root "${STORE_ROOT}" --sock "${SOCK}" --store-backend "${STORE_BACKEND}" --space "${SPACE}"