import "../Justfile.common"

ROOT := justfile_directory()
REPO_ROOT := env_var_or_default("REPO_ROOT", ROOT + "/../../../../")

COMPOSE_FILE := env_var_or_default("COMPOSE_FILE", "")
DEPS_SERVICES := env_var_or_default("DEPS_SERVICES", "")
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-quality-gates")
PROJECT_NAME := env_var_or_default("PROJECT_NAME", SESSION)
COMPOSE_ENV := ""



build:
    @echo "No build artifacts required."

format:
    cd "{{REPO_ROOT}}"; dart format --output=none --set-exit-if-changed .

analyze:
    cd "{{REPO_ROOT}}"; dart analyze

unit:
    cd "{{REPO_ROOT}}/packages/stem"; dart test --fail-fast

chaos:
    cd "{{REPO_ROOT}}"; dart test packages/stem_redis/test --tags chaos --fail-fast

perf:
    cd "{{REPO_ROOT}}"; dart test packages/stem/test/performance --fail-fast

coverage:
    cd "{{REPO_ROOT}}/packages/stem"; dart test --coverage=coverage --fail-fast
    cd "{{REPO_ROOT}}/packages/stem"; dart run coverage:format_coverage --in=coverage --out=coverage/lcov.info --lcov --report-on=lib

quick: format analyze unit

quality: format analyze unit chaos perf coverage

examples-smoke:
    cd "{{REPO_ROOT}}/packages/stem/example/autoscaling_demo"; just build
    cd "{{REPO_ROOT}}/packages/stem/example/scheduler_observability"; just build
    cd "{{REPO_ROOT}}/packages/stem/example/signing_key_rotation"; just build
    cd "{{REPO_ROOT}}/packages/stem/example/ops_health_suite"; just build
    cd "{{REPO_ROOT}}/packages/stem/example/progress_heartbeat"; just build
    cd "{{REPO_ROOT}}/packages/stem/example/worker_control_lab"; just build
