#!/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}"