fix(build): pass peer CLI inputs as shell data
Peer CLI scenarios, container names, and macvlan overrides were rendered into shell source by Just before execution. Quoting the rendered text did not stop command substitution or quote breaking. Enable positional arguments for the variadic scenario recipe and consume all caller-controlled values through exported shell variables. This preserves the existing recipe interface, including multiple scenario arguments and network overrides, while keeping their contents out of shell syntax. Test Plan: - `just --fmt --check` -- passed. - `just --dry-run --no-deps peer-cli-tests S1 '$(printf SCENARIO_PROBE)' 'space value'` -- rendered only `"$@"`. - `just --dry-run --no-deps peer-cli-run '$(printf NAME_PROBE)'` -- rendered only quoted `$NAME` uses. - `just --dry-run --no-deps LANSPREAD_NET='$(printf NET_PROBE)' peer-cli-net` -- rendered only quoted network variables. - `git diff --cached --check` -- passed.
This commit is contained in:
@@ -184,8 +184,9 @@ peer-cli-image: fixture-catalogs-check
|
||||
mkdir -p "$DOCKER_CONFIG"
|
||||
docker build -f crates/lanspread-peer-cli/Dockerfile -t lanspread-peer-cli:dev .
|
||||
|
||||
[positional-arguments]
|
||||
peer-cli-tests *SCENARIOS: peer-cli-image
|
||||
python3 crates/lanspread-peer-cli/scripts/run_extended_scenarios.py {{ SCENARIOS }}
|
||||
python3 crates/lanspread-peer-cli/scripts/run_extended_scenarios.py "$@"
|
||||
|
||||
# macvlan: each peer container gets its own MAC/IP on the real LAN.
|
||||
# Override on the command line if your LAN differs, e.g.
|
||||
@@ -197,20 +198,20 @@ LANSPREAD_GATEWAY := "192.168.1.1"
|
||||
|
||||
peer-cli-net:
|
||||
mkdir -p "$DOCKER_CONFIG"
|
||||
docker network inspect {{ LANSPREAD_NET }} >/dev/null 2>&1 || \
|
||||
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 }}
|
||||
--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" \
|
||||
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 }}" \
|
||||
--name "$NAME" \
|
||||
--games-dir /games \
|
||||
--state-dir /state \
|
||||
--catalog-db /app/game.db \
|
||||
@@ -218,7 +219,7 @@ peer-cli-run NAME: peer-cli-net
|
||||
|
||||
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 \
|
||||
docker run --rm --init --network "$LANSPREAD_NET" --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 \
|
||||
@@ -230,7 +231,7 @@ peer-cli-alpha: peer-cli-net
|
||||
|
||||
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 \
|
||||
docker run --rm --init --network "$LANSPREAD_NET" --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 \
|
||||
@@ -242,7 +243,7 @@ peer-cli-bravo: peer-cli-net
|
||||
|
||||
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 \
|
||||
docker run --rm --init --network "$LANSPREAD_NET" --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 \
|
||||
|
||||
Reference in New Issue
Block a user