5df82aa4f3
The launcher was mixing lifecycle event handlers with the games-list snapshot when deciding the card status. That left multiple writers for the same install_status field and made event ordering visible in React. Make games-list-updated active_operations the authoritative source for busy status. Lifecycle events no longer mutate the card status; they only keep their non-status side effects such as rescans and error messages. The only remaining optimistic status is CheckingPeers before the backend emits its next snapshot. Add a frontend reducer test that proves an install stays in Installing while an active install snapshot exists, then settles to Installed only after the active operation clears with installed local state. Test Plan: - git diff --check - just fmt - just frontend-test - just build Refs: local install/download status snapshot cleanup
103 lines
3.2 KiB
Makefile
103 lines
3.2 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")
|
|
|
|
run:
|
|
cargo tauri dev --release
|
|
|
|
build:
|
|
cargo tauri build --no-bundle #-- --profile dev
|
|
|
|
bundle:
|
|
cargo tauri build -- --profile production
|
|
|
|
fmt:
|
|
cargo +nightly fmt
|
|
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
|