79 lines
2.3 KiB
Bash
Executable file
79 lines
2.3 KiB
Bash
Executable file
#!/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}"
|