d63d4b9c2f
Add a project-level setup recipe for the initial development bootstrap. The recipe installs the Tauri CLI and resolves the Tauri frontend dependencies from the Deno lockfile so new contributors have one command before running or building the app. Refresh the README to keep it short and focused on what Lanspread is, how to bootstrap it, and the most important just recipes. Test Plan: - just --summary - just --dry-run setup - git diff --check - git diff --cached --check
108 lines
3.4 KiB
Makefile
108 lines
3.4 KiB
Makefile
export RUSTFLAGS := "-C target-cpu=native"
|
|
export WEBKIT_DISABLE_COMPOSITING_MODE := "1"
|
|
export DOCKER_CONFIG := env_var_or_default("DOCKER_CONFIG", ".lanspread-peer-cli/docker-config")
|
|
|
|
setup:
|
|
cargo install tauri-cli
|
|
cd crates/lanspread-tauri-deno-ts && deno install --frozen=true
|
|
|
|
run:
|
|
cargo tauri dev --release
|
|
|
|
build:
|
|
cargo tauri build --no-bundle #-- --profile dev
|
|
|
|
bundle:
|
|
cargo tauri build -- --profile production
|
|
|
|
fmt:
|
|
cargo +nightly fmt
|
|
tombi format
|
|
just --fmt
|
|
|
|
_fix:
|
|
cargo fix
|
|
cargo clippy --fix
|
|
|
|
fix: _fix fmt
|
|
|
|
clippy:
|
|
cargo clippy
|
|
|
|
test:
|
|
cargo test --workspace
|
|
|
|
frontend-test:
|
|
cd crates/lanspread-tauri-deno-ts && deno test --unstable-sloppy-imports tests
|
|
|
|
clean:
|
|
cargo clean
|
|
|
|
peer-cli-build:
|
|
cargo build -p lanspread-peer-cli
|
|
|
|
peer-cli-image:
|
|
mkdir -p "$DOCKER_CONFIG"
|
|
docker build -f crates/lanspread-peer-cli/Dockerfile -t lanspread-peer-cli:dev .
|
|
|
|
# macvlan: each peer container gets its own MAC/IP on the real LAN.
|
|
# Override on the command line if your LAN differs, e.g.
|
|
# just LANSPREAD_PARENT_IFACE=enp4s0 LANSPREAD_SUBNET=10.0.0.0/24 LANSPREAD_GATEWAY=10.0.0.1 peer-cli-net
|
|
LANSPREAD_NET := "lanspread"
|
|
LANSPREAD_PARENT_IFACE := "eth0"
|
|
LANSPREAD_SUBNET := "192.168.1.0/24"
|
|
LANSPREAD_GATEWAY := "192.168.1.1"
|
|
|
|
peer-cli-net:
|
|
mkdir -p "$DOCKER_CONFIG"
|
|
docker network inspect {{ LANSPREAD_NET }} >/dev/null 2>&1 || \
|
|
docker network create -d macvlan \
|
|
--subnet={{ LANSPREAD_SUBNET }} \
|
|
--gateway={{ LANSPREAD_GATEWAY }} \
|
|
-o parent={{ LANSPREAD_PARENT_IFACE }} \
|
|
{{ LANSPREAD_NET }}
|
|
|
|
peer-cli-run NAME: peer-cli-net
|
|
mkdir -p ".lanspread-peer-cli/{{ NAME }}/state" ".lanspread-peer-cli/{{ NAME }}/games"
|
|
docker run --rm --init --network {{ LANSPREAD_NET }} --name "lanspread-peer-cli-{{ NAME }}" -i \
|
|
-v "$PWD/.lanspread-peer-cli/{{ NAME }}/state:/state" \
|
|
-v "$PWD/.lanspread-peer-cli/{{ NAME }}/games:/games" \
|
|
lanspread-peer-cli:dev \
|
|
--name "{{ NAME }}" \
|
|
--games-dir /games \
|
|
--state-dir /state \
|
|
--catalog-db /app/game.db
|
|
|
|
peer-cli-alpha: peer-cli-net
|
|
mkdir -p ".lanspread-peer-cli/alpha/state"
|
|
docker run --rm --init --network lanspread --name "lanspread-peer-cli-alpha" -i \
|
|
-v "$PWD/.lanspread-peer-cli/alpha/state:/state" \
|
|
-v "$PWD/crates/lanspread-peer-cli/fixtures/fixture-alpha:/games:ro" \
|
|
lanspread-peer-cli:dev \
|
|
--name "alpha" \
|
|
--games-dir /games \
|
|
--state-dir /state \
|
|
--catalog-db /app/game.db
|
|
|
|
peer-cli-bravo: peer-cli-net
|
|
mkdir -p ".lanspread-peer-cli/bravo/state"
|
|
docker run --rm --init --network lanspread --name "lanspread-peer-cli-bravo" -i \
|
|
-v "$PWD/.lanspread-peer-cli/bravo/state:/state" \
|
|
-v "$PWD/crates/lanspread-peer-cli/fixtures/fixture-bravo:/games:ro" \
|
|
lanspread-peer-cli:dev \
|
|
--name "bravo" \
|
|
--games-dir /games \
|
|
--state-dir /state \
|
|
--catalog-db /app/game.db
|
|
|
|
peer-cli-charlie: peer-cli-net
|
|
mkdir -p ".lanspread-peer-cli/charlie/state"
|
|
docker run --rm --init --network lanspread --name "lanspread-peer-cli-charlie" -i \
|
|
-v "$PWD/.lanspread-peer-cli/charlie/state:/state" \
|
|
-v "$PWD/crates/lanspread-peer-cli/fixtures/fixture-charlie:/games:ro" \
|
|
lanspread-peer-cli:dev \
|
|
--name "charlie" \
|
|
--games-dir /games \
|
|
--state-dir /state \
|
|
--catalog-db /app/game.db
|