donglora-bridge 3.0.1

Peer-to-peer LoRa bridge using iroh and DongLoRa
Documentation
set shell := ["bash", "-c"]

default: build

[private]
_ensure_tools:
    @mise trust --yes . 2>/dev/null; mise install --quiet

# Run the bridge (TUI mode)
run *args: _ensure_tools
    cargo run --release -- {{args}}

# Run in headless mode
run-headless *args: _ensure_tools
    cargo run --release -- --log-only {{args}}

# Run the config wizard
config: _ensure_tools
    cargo run --release -- config

# Run all checks (fmt, clippy, test, audit)
check: fmt-check clippy test audit

# Format code
fmt: _ensure_tools
    cargo fmt

# Check formatting without changing files
fmt-check: _ensure_tools
    cargo fmt --check

# Lint with clippy
clippy: _ensure_tools
    cargo clippy --all-targets -- -D warnings

# Run all tests
test: test-unit

# Normal unit tests
test-unit: _ensure_tools
    cargo nextest run

# Mutation testing
test-mutants *args: _ensure_tools
    cargo mutants {{args}}

# Fuzz a target (requires nightly)
test-fuzz TARGET="fuzz_gossip_frame_decode" DURATION="60": _ensure_tools
    cargo +nightly fuzz run {{TARGET}} -- -max_total_time={{DURATION}}

# Security + license audit
audit: _ensure_tools
    cargo deny check

# Build release binary
build: _ensure_tools
    cargo build --release

# Generate docs
doc: _ensure_tools
    cargo doc --no-deps --open

# Check for outdated dependencies
outdated: _ensure_tools
    cargo outdated

# Clean build artifacts
clean:
    cargo clean