156 lines
4.7 KiB
Makefile
156 lines
4.7 KiB
Makefile
# Fluxer Development Justfile
|
|
# Uses the dev CLI (Go) as a compose wrapper
|
|
|
|
# Dev CLI command
|
|
devctl := "go run ./dev"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Docker Compose: Service Management
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# Start all or selected services in the background
|
|
# Usage:
|
|
# just up # all services
|
|
# just up api gateway # specific services
|
|
up *SERVICES:
|
|
{{devctl}} ensure-network
|
|
{{devctl}} up {{SERVICES}}
|
|
|
|
# Start all or selected services and watch for changes
|
|
# Usage:
|
|
# just watch
|
|
# just watch api gateway
|
|
watch *SERVICES:
|
|
{{devctl}} ensure-network
|
|
docker compose --env-file dev/.env -f dev/compose.yaml watch {{SERVICES}}
|
|
|
|
# Stop and remove containers (preserves volumes)
|
|
# Usage:
|
|
# just down
|
|
down:
|
|
{{devctl}} down
|
|
|
|
# Stop and remove containers including volumes
|
|
# Usage:
|
|
# just nuke
|
|
nuke:
|
|
{{devctl}} down --volumes
|
|
|
|
# Restart all or selected services
|
|
# Usage:
|
|
# just restart
|
|
# just restart api gateway
|
|
restart *SERVICES:
|
|
{{devctl}} restart {{SERVICES}}
|
|
|
|
# Show logs for all or selected services
|
|
# Usage:
|
|
# just logs
|
|
# just logs api
|
|
# just logs api gateway
|
|
logs *SERVICES:
|
|
{{devctl}} logs {{SERVICES}}
|
|
|
|
# List running containers
|
|
# Usage:
|
|
# just ps
|
|
ps:
|
|
{{devctl}} ps
|
|
|
|
# Open a shell in a service container
|
|
# Usage:
|
|
# just sh api
|
|
sh SERVICE:
|
|
{{devctl}} sh {{SERVICE}}
|
|
|
|
# Execute a command in a service container
|
|
# Usage:
|
|
# just exec api "env | sort"
|
|
exec SERVICE CMD:
|
|
{{devctl}} exec {{SERVICE}} sh -c "{{CMD}}"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Configuration & Setup
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# Sync LiveKit configuration from environment variables
|
|
# Usage:
|
|
# just livekit-sync
|
|
livekit-sync:
|
|
{{devctl}} livekit-sync
|
|
|
|
# Download GeoIP database
|
|
# Usage:
|
|
# just geoip-download
|
|
# just geoip-download TOKEN=xxx
|
|
geoip-download TOKEN='':
|
|
if [ "{{TOKEN}}" = "" ]; then {{devctl}} geoip-download; else {{devctl}} geoip-download --token {{TOKEN}}; fi
|
|
|
|
# Ensure Docker network exists
|
|
# Usage:
|
|
# just ensure-network
|
|
ensure-network:
|
|
{{devctl}} ensure-network
|
|
|
|
# Bootstrap development environment
|
|
# Usage:
|
|
# just bootstrap
|
|
bootstrap:
|
|
just ensure-network
|
|
just livekit-sync
|
|
just geoip-download
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Cassandra Migrations
|
|
# ---------------------------------------------------------------------------
|
|
|
|
mig name:
|
|
@cargo run --release --quiet --manifest-path scripts/cassandra-migrate/Cargo.toml -- create "{{name}}"
|
|
|
|
mig-check:
|
|
@cargo run --release --quiet --manifest-path scripts/cassandra-migrate/Cargo.toml -- check
|
|
|
|
mig-up host="localhost" user="cassandra" pass="cassandra":
|
|
@cargo run --release --quiet --manifest-path scripts/cassandra-migrate/Cargo.toml -- --host "{{host}}" --username "{{user}}" --password "{{pass}}" up
|
|
|
|
mig-status host="localhost" user="cassandra" pass="cassandra":
|
|
@cargo run --release --quiet --manifest-path scripts/cassandra-migrate/Cargo.toml -- --host "{{host}}" --username "{{user}}" --password "{{pass}}" status
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Utilities
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# Run license enforcer
|
|
lic:
|
|
@cargo run --release --quiet --manifest-path scripts/license-enforcer/Cargo.toml
|
|
|
|
# Generate snowflake IDs
|
|
snow count="1":
|
|
@cargo run --release --quiet --manifest-path scripts/snowflake-generator/Cargo.toml -- --count {{count}}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Integration Tests
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# Spin up the full integration stack, run the Go tests, then tear everything down
|
|
integration-tests:
|
|
set -euo pipefail
|
|
trap 'docker compose -f tests/integration/compose.yaml down' EXIT
|
|
docker compose -f tests/integration/compose.yaml up --build --abort-on-container-exit integration-tests
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Go Tooling & QA
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# Install pinned Go tooling (staticcheck, golangci-lint) with Go 1.25.5
|
|
go-tools-install:
|
|
GOTOOLCHAIN=go1.25.5 go install honnef.co/go/tools/cmd/staticcheck@2025.1.1
|
|
GOTOOLCHAIN=go1.25.5 go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.61.0
|
|
|
|
# Run formatting, tests, and linters for integration tests
|
|
go-integration-check:
|
|
gofmt -w tests/integration
|
|
go test ./tests/integration/...
|
|
$(go env GOPATH)/bin/staticcheck ./tests/integration/...
|
|
$(go env GOPATH)/bin/golangci-lint run ./tests/integration/...
|