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", "collector jaeger prometheus grafana")
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-otel-metrics")
PROJECT_NAME := env_var_or_default("PROJECT_NAME", SESSION)
COMPOSE_ENV := "OTEL_GRPC_PORT=" + OTEL_GRPC_PORT + " " + "OTEL_HTTP_PORT=" + OTEL_HTTP_PORT + " " + "OTEL_PROM_PORT=" + OTEL_PROM_PORT + " " + "JAEGER_UI_PORT=" + JAEGER_UI_PORT + " " + "PROMETHEUS_PORT=" + PROMETHEUS_PORT + " " + "GRAFANA_PORT=" + GRAFANA_PORT
OTEL_GRPC_PORT := env_var_or_default("OTEL_GRPC_PORT", "4317")
OTEL_HTTP_PORT := env_var_or_default("OTEL_HTTP_PORT", "4318")
OTEL_PROM_PORT := env_var_or_default("OTEL_PROM_PORT", "8889")
JAEGER_UI_PORT := env_var_or_default("JAEGER_UI_PORT", "16686")
PROMETHEUS_PORT := env_var_or_default("PROMETHEUS_PORT", "9090")
GRAFANA_PORT := env_var_or_default("GRAFANA_PORT", "3000")



build:
    dart pub get
    dart build cli -o "{{BUILD_DIR}}"

run:
    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 OTEL_HTTP_PORT="${OTEL_HTTP_PORT:-4318}"; export STEM_OTLP_ENDPOINT="${STEM_OTLP_ENDPOINT:-http://localhost:${OTEL_HTTP_PORT}/v1/metrics}"; "{{BUILD_DIR}}/bundle/bin"/*

clean:
    rm -rf "{{BUILD_DIR}}"

tmux:
    {{JUST}} tmux-guard
    {{JUST}} tmux-prep
    tmux new-session -d -s "{{SESSION}}" -n app "cd \"{{ROOT}}\" && {{JUST}} run"
    {{JUST}} tmux-attach
