set shell := ["bash", "-eu", "-o", "pipefail", "-c"]

target := "thumbv7m-none-eabi"
chip := env_var_or_default("PROBE_RS_CHIP", "STM32F103C8")

build:
    cargo build --workspace

build-blinky:
    cargo build -p blinky-basic

build-timer:
    cargo build -p blinky-timer

build-button:
    cargo build -p button-input

build-embassy-blinky:
    cargo build -p embassy-blinky

build-embassy-button:
    cargo build -p embassy-button

build-embassy-rgb:
    cargo build -p embassy-rgb

build-embassy-rgb-check:
    cargo build -p embassy-rgb-check

flash-blinky:
    cargo build -p blinky-basic
    probe-rs download --chip {{chip}} target/{{target}}/debug/blinky-basic

flash-timer:
    cargo build -p blinky-timer
    probe-rs download --chip {{chip}} target/{{target}}/debug/blinky-timer

flash-button:
    cargo build -p button-input
    probe-rs download --chip {{chip}} target/{{target}}/debug/button-input

flash-embassy-blinky:
    cargo build -p embassy-blinky
    probe-rs download --chip {{chip}} target/{{target}}/debug/embassy-blinky

flash-embassy-button:
    cargo build -p embassy-button
    probe-rs download --chip {{chip}} target/{{target}}/debug/embassy-button

flash-embassy-rgb:
    cargo build -p embassy-rgb
    probe-rs download --chip {{chip}} target/{{target}}/debug/embassy-rgb

flash-embassy-rgb-check:
    cargo build -p embassy-rgb-check
    probe-rs download --chip {{chip}} target/{{target}}/debug/embassy-rgb-check

run-blinky:
    cargo build -p blinky-basic
    probe-rs run --chip {{chip}} target/{{target}}/debug/blinky-basic

run-timer:
    cargo build -p blinky-timer
    probe-rs run --chip {{chip}} target/{{target}}/debug/blinky-timer

run-button:
    cargo build -p button-input
    probe-rs run --chip {{chip}} target/{{target}}/debug/button-input

run-embassy-blinky:
    cargo build -p embassy-blinky
    probe-rs run --chip {{chip}} target/{{target}}/debug/embassy-blinky

run-embassy-button:
    cargo build -p embassy-button
    probe-rs run --chip {{chip}} target/{{target}}/debug/embassy-button

run-embassy-rgb:
    cargo build -p embassy-rgb
    probe-rs run --chip {{chip}} target/{{target}}/debug/embassy-rgb

run-embassy-rgb-check:
    cargo build -p embassy-rgb-check
    probe-rs run --chip {{chip}} target/{{target}}/debug/embassy-rgb-check

fmt:
    cargo fmt --all

clippy:
    cargo clippy --workspace --bins -- -D warnings

check:
    cargo check --workspace

clean:
    cargo clean
