import "../Justfile.common"

ROOT := justfile_directory()

COMPOSE_FILE := env_var_or_default("COMPOSE_FILE", "docker-compose.yml")
DEPS_SERVICES := env_var_or_default("DEPS_SERVICES", "postgres")
BUILD_DIR := env_var_or_default("BUILD_DIR", "build")
ENV_FILE := env_var_or_default("ENV_FILE", ".env")
SESSION := env_var_or_default("SESSION", "stem-postgres-worker")
PROJECT_NAME := env_var_or_default("PROJECT_NAME", SESSION)
COMPOSE_ENV := "POSTGRES_PORT=" + POSTGRES_PORT
POSTGRES_PORT := env_var_or_default("POSTGRES_PORT", "5432")



build-enqueuer:
    cd "{{ROOT}}/enqueuer"; dart pub get; dart build cli -o "{{BUILD_DIR}}"

build-worker:
    cd "{{ROOT}}/worker"; dart pub get; dart build cli -o "{{BUILD_DIR}}"

build: build-enqueuer build-worker

run-enqueuer:
    cd "{{ROOT}}/enqueuer"; if [ -f "{{ENV_FILE}}" ]; then set -a; . "{{ENV_FILE}}"; set +a; elif [ -f "{{ROOT}}/{{ENV_FILE}}" ]; then set -a; . "{{ROOT}}/{{ENV_FILE}}"; set +a; fi; export POSTGRES_PORT="${POSTGRES_PORT:-5432}"; export STEM_BROKER_URL="${STEM_BROKER_URL:-postgres://stem:stem@localhost:${POSTGRES_PORT}/stem_demo}"; export STEM_RESULT_BACKEND_URL="${STEM_RESULT_BACKEND_URL:-postgres://stem:stem@localhost:${POSTGRES_PORT}/stem_demo}"; export STEM_DEFAULT_QUEUE="${STEM_DEFAULT_QUEUE:-reports}"; "{{BUILD_DIR}}/bundle/bin"/*

run-worker:
    cd "{{ROOT}}/worker"; if [ -f "{{ENV_FILE}}" ]; then set -a; . "{{ENV_FILE}}"; set +a; elif [ -f "{{ROOT}}/{{ENV_FILE}}" ]; then set -a; . "{{ROOT}}/{{ENV_FILE}}"; set +a; fi; export POSTGRES_PORT="${POSTGRES_PORT:-5432}"; export STEM_BROKER_URL="${STEM_BROKER_URL:-postgres://stem:stem@localhost:${POSTGRES_PORT}/stem_demo}"; export STEM_RESULT_BACKEND_URL="${STEM_RESULT_BACKEND_URL:-postgres://stem:stem@localhost:${POSTGRES_PORT}/stem_demo}"; export STEM_DEFAULT_QUEUE="${STEM_DEFAULT_QUEUE:-reports}"; "{{BUILD_DIR}}/bundle/bin"/*

run: run-enqueuer

clean:
    rm -rf "{{ROOT}}/enqueuer/{{BUILD_DIR}}" "{{ROOT}}/worker/{{BUILD_DIR}}"

tmux:
    {{JUST}} tmux-guard
    {{JUST}} tmux-prep
    tmux new-session -d -s "{{SESSION}}" -n app "cd \"{{ROOT}}\" && {{JUST}} run-worker"
    tmux split-window -t "{{SESSION}}:app" -v "cd \"{{ROOT}}\" && {{JUST}} run-enqueuer"
    tmux select-layout -t "{{SESSION}}:app" even-vertical
    {{JUST}} tmux-attach
