#!/usr/bin/env bash

set -eu
script_name=$0

die() {
    echo >&2 "$@"
    exit 1
}

about() {
    die "usage: ${script_name} [ start | stop ]"
}

#shellcheck disable=SC1007
THIS_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
cd "${THIS_DIR}"/../../
#shellcheck disable=SC1091
. ./.environment.sh

# you have not removed set -u above, have you?

[[ -z "${CROWDSEC-}" ]] && die "\$CROWDSEC must be defined."
[[ -z "${CSCLI-}" ]] && die "\$CSCLI must be defined."
[[ -z "${LOG_DIR-}" ]] && die "\$LOG_DIR must be defined."
[[ -z "${PID_DIR-}" ]] && die "\$PID_DIR must be defined."


if [[ ! -f "${CROWDSEC}" ]]; then
    die "${CROWDSEC} is missing. Please build (with 'make bats-build') or install it."
fi

start() {
    systemctl start crowdsec
    ./bin/wait-for-port 6060
}

start_pid() {
    start
    pidof /usr/bin/crowdsec
}

stop() {
    systemctl stop crowdsec # systemd doesn't throw error when stopping already stopped stuff
    while pidof /usr/bin/crowdsec ; do sleep 0.1; done
}


# ---------------------------

[[ $# -lt 1 ]] && about

case "$1" in
    start)
        start
        ;;
    start-pid)
        start_pid
        ;;
    stop)
        stop
        ;;
    *)
        about
        ;;
esac;

