blob: 32fca4fd25b1c9a42128e6ee078ed9b8fa0e5fa9 [file] [log] [blame]
#!/bin/bash
source "${VEYRON_ROOT}/environment/scripts/lib/shell.sh"
trap at_exit INT TERM EXIT
readonly REPO_ROOT=$(git rev-parse --show-toplevel)
readonly ID_FILE=$(shell::tmp_file)
readonly DB_DIR=$(shell::tmp_dir)
at_exit() {
exec 2>/dev/null
shell::at_exit # deletes ID_FILE and DB_DIR
kill -9 $(jobs -p) || true
}
main() {
# Used by test.sh to get the store viewer port.
local VIEWER_PORT_FILE=""
if [[ "$#" -eq 1 ]]; then
VIEWER_PORT_FILE="$1"
fi
local -r VIEWER_PORT_FILE
local -r VEYRON_BIN="${REPO_ROOT}/go/bin"
# Generate a self-signed identity.
"${VEYRON_BIN}/identity" generate > "${ID_FILE}"
# Start the mounttable daemon.
local -r MT_PORT=$("${VEYRON_BIN}/findunusedport")
"${VEYRON_BIN}/mounttabled" --address="127.0.0.1:${MT_PORT}" &
# Wait for mounttabled to start up.
sleep 1
export VEYRON_IDENTITY="${ID_FILE}"
export NAMESPACE_ROOT="/127.0.0.1:${MT_PORT}"
# Start the store daemon.
local -r VIEWER_PORT=$("${VEYRON_BIN}/findunusedport")
"${VEYRON_BIN}/stored" --address=127.0.0.1:0 --db="${DB_DIR}" --viewerPort="${VIEWER_PORT}" &
# Wait for stored to start up.
sleep 1
# Initialize the store with data and templates.
"${VEYRON_BIN}/mdb_init" --load-all
if [[ -n "${VIEWER_PORT_FILE}" ]]; then
echo "${VIEWER_PORT}" > "${VIEWER_PORT_FILE}"
fi
echo
echo "Visit http://localhost:${VIEWER_PORT} to browse the store."
echo "Hit Ctrl-C to kill all running services."
wait
}
main "$@"