60 lines
1.7 KiB
Bash
Executable File
60 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
PYTHON_BIN="${PYTHON_BIN:-python3}"
|
|
VENV_DIR="${VENV_DIR:-.venv}"
|
|
|
|
if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then
|
|
echo "[dev] $PYTHON_BIN was not found. Install Python 3 first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -x "$VENV_DIR/bin/python" ]]; then
|
|
echo "[dev] Creating virtual environment in $VENV_DIR"
|
|
if ! "$PYTHON_BIN" -m venv "$VENV_DIR"; then
|
|
echo "[dev] Failed to create a virtual environment." >&2
|
|
echo "[dev] On Debian/Ubuntu install: sudo apt install python3-venv" >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
PYTHON="$VENV_DIR/bin/python"
|
|
PIP="$VENV_DIR/bin/pip"
|
|
|
|
if grep -Eq "^[[:space:]]*[^#[:space:]]" requirements.txt; then
|
|
echo "[dev] Installing Python dependencies"
|
|
"$PIP" install --disable-pip-version-check -r requirements.txt
|
|
else
|
|
echo "[dev] No third-party Python dependencies to install"
|
|
fi
|
|
|
|
mkdir -p data/dev logs
|
|
|
|
export PYTHONUNBUFFERED=1
|
|
export PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
export PIP_NO_CACHE_DIR=1
|
|
export WEB_BIND="${WEB_BIND:-127.0.0.1}"
|
|
export WEB_PORT="${WEB_PORT:-8080}"
|
|
export DB_PATH="${DB_PATH:-$ROOT_DIR/data/dev/ids.db}"
|
|
export AUTO_BLOCK=false
|
|
|
|
if [[ "${1:-}" == "--test" ]]; then
|
|
echo "[dev] Running tests"
|
|
exec "$PYTHON" -m unittest discover -s tests -v
|
|
fi
|
|
|
|
if [[ "${RUN_TESTS:-false}" == "true" ]]; then
|
|
echo "[dev] Running tests"
|
|
"$PYTHON" -m unittest discover -s tests -v
|
|
fi
|
|
|
|
echo "[dev] Starting web-only development server"
|
|
echo "[dev] URL: http://${WEB_BIND}:${WEB_PORT}"
|
|
echo "[dev] Database: ${DB_PATH}"
|
|
echo "[dev] Docker, Suricata, TAP and TZSP are NOT started in this mode."
|
|
|
|
exec "$PYTHON" -m app.dev_web
|