#!/bin/sh

usage() {
    cat <<EOF
usage: ${0##*/} [command]
    -h          Print this help message.
    -a          Run API on host 0.0.0.0:8000.
    -i          Install dependencies.
    -d          Run docker-compose up.
    -c          Configure databases.
    -f          Build and run frontend.
    -t          Run frontend in dev-mode.
EOF
    exit 1
}

RUN=
while getopts "hadicft" OPTION; do
    case $OPTION in
    a) RUN=api ;;
    d) RUN=docker ;;
    i) RUN=install ;;
    c) RUN=configure  ;;
    f) RUN=front  ;;
    t) RUN=test;;
    *) usage ;;
    esac
done

if [ "$RUN" = 'install' ]; then
    poetry install
elif [ "$RUN" = 'api' ]; then
    poetry run uvicorn bsition.api.main:app --host 0.0.0.0
elif [ "$RUN" = 'configure' ]; then
    poetry run configure
elif [ "$RUN" = 'front' ]; then
    cd bsition/frontend
    npm install
    npm run build
    npm run start
elif [ "$RUN" = 'test' ]; then
    cd bsition/frontend
    npm run dev
else
    [ ! -d data ] && mkdir data
    [ ! -d data/postgres ] && mkdir data/postgres
    [ ! -d data/mongo ] && mkdir data/mongo
    [ ! -d data/elasticsearch ] && mkdir data/elasticsearch
    docker-compose up
fi