#!/usr/bin/env bash
set -euo pipefail

PACKAGE_ROOT="${RUNMOTE_PACKAGE_ROOT:-/usr/lib/runmote/runmote-local}"
DOC_ROOT="${RUNMOTE_PACKAGE_DOC_ROOT:-/usr/share/doc/runmote}"
BUNDLE_ROOT="${RUNMOTE_BUNDLE_ROOT:-$(dirname "$PACKAGE_ROOT")}"
RUNTIME_BIN_DIR="${RUNMOTE_RUNTIME_BIN_DIR:-$BUNDLE_ROOT/bin}"
PYTHON_RUNTIME_ROOT="${RUNMOTE_PYTHON_RUNTIME_ROOT:-$BUNDLE_ROOT/runtime/python}"
PYTHON_BIN="${RUNMOTE_PYTHON_BIN:-$PYTHON_RUNTIME_ROOT/bin/python3}"

case "${1:-}" in
	--version)
		printf 'runmote %s\n' "${RUNMOTE_PACKAGE_VERSION:-0.1.1~rc23}"
		exit 0
		;;
	bg)
		shift
		set -- start --dev --background "$@"
		;;
	foreground)
		shift
		set -- start --dev "$@"
		;;
	start)
		shift
		set -- start --dev "$@"
		;;
esac

export PYTHONNOUSERSITE=1
export PYTHONDONTWRITEBYTECODE=1
[[ -x "$PYTHON_BIN" ]] || {
	printf 'runmote: bundled Python runtime missing: %s\n' "$PYTHON_BIN" >&2
	exit 127
}
export PYTHONHOME="$PYTHON_RUNTIME_ROOT"
export LD_LIBRARY_PATH="$PYTHON_RUNTIME_ROOT/lib/native${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export PYTHONPATH="$PACKAGE_ROOT/src:$BUNDLE_ROOT/runmote-agent/src:$BUNDLE_ROOT/runmote-client/src:$PYTHON_RUNTIME_ROOT/lib/python3.10/site-packages"
export PATH="$RUNTIME_BIN_DIR:$PATH"
export RUNMOTE_CLI_PROG="${RUNMOTE_CLI_PROG:-runmote}"
export RUNMOTE_PACKAGE_MODE="${RUNMOTE_PACKAGE_MODE:-production-cli}"
export RUNMOTE_PACKAGE_DOC_ROOT="$DOC_ROOT"
export RUNMOTE_PACKAGE_VERSION="${RUNMOTE_PACKAGE_VERSION:-0.1.1~rc23}"
export RUNMOTE_BUNDLE_ROOT="$BUNDLE_ROOT"
export RUNMOTE_RUNTIME_BIN_DIR="$RUNTIME_BIN_DIR"
export RUNMOTE_PYTHON_RUNTIME_ROOT="$PYTHON_RUNTIME_ROOT"
export RUNMOTE_PYTHON_BIN="$PYTHON_BIN"

exec "$PYTHON_BIN" -B -m runmote_local "$@"
