#!/bin/sh
set -eu

. "$(git rev-parse --show-toplevel)/packages/tools/src/sh/env.sh"

NAME=$(jq -r '.name' package.json)

# Tuning knobs come from the same gitignored root .env a deploy reads (RECFLARE_<VAR>, see
# .env.example), so a knob is configured in exactly one place whether you're running locally
# or shipping. Unset knobs fall back to the worker's own default constants, same as a deploy.
#
# Passed as `--var` rather than left to wrangler's own .env loading: wrangler only reads a
# .env sitting next to the worker's wrangler.jsonc, which would mean a second file per app.
recflare_load_env
EXTRA_VARS=$(recflare_vars)

# Give each worker a stable, unique dev port so `turbo dev` can run them all in
# parallel without colliding on wrangler's default 8787 (and its 9229 inspector
# port). The offset is the worker's alphabetical position among its siblings, so
# it stays deterministic and needs no per-worker configuration.
OFFSET=$(
	for dir in ../*/; do
		[ -f "${dir}wrangler.jsonc" ] || continue
		jq -r '.name' "${dir}package.json"
	done | sort | grep -Fnx "$NAME" | cut -d: -f1
)
PORT=$((8787 + OFFSET - 1))
INSPECTOR_PORT=$((9229 + OFFSET - 1))

# $EXTRA_VARS is intentionally unquoted — it's a flag list to word-split on.
exec wrangler dev \
	--var NAME:"$NAME" \
	$EXTRA_VARS \
	--port "$PORT" \
	--inspector-port "$INSPECTOR_PORT" \
	"$@"
