Files
pirouette/build.sh
Arnaud Morin 0b96c6bcfe Introducing the pirouette FPV frame for GFPV
Signed-off-by: Arnaud Morin <arnaud.gfpv@mailops.fr>
2026-09-03 23:39:06 +02:00

35 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0
# @author Arnaud Morin <arnaud.gfpv@mailops.fr>
#
# Build every export from the model into build/.
#
# ./build.sh STEP + STL + DXF + the assembly PNGs
# ./build.sh --no-png skip the renders, which are most of the runtime
#
set -euo pipefail
cd "$(dirname "$0")"
if ! command -v uv >/dev/null 2>&1; then
echo "build.sh: uv not found." >&2
echo " install it: curl -LsSf https://astral.sh/uv/install.sh | sh" >&2
exit 1
fi
# Creates .venv from pyproject.toml the first time; a no-op on every run after
# that. --inexact so it installs what the model needs without pruning anything
# else you keep in there, an ipython or a cq-editor say.
uv sync --inexact
# --no-sync below: uv run would otherwise re-sync per invocation, and it has no
# --inexact of its own, so it would undo the line above and prune those extras.
run() { uv run --no-sync python "$@"; }
# Each part asserts it came out as one solid at import time, so a part that
# broke stops the build here rather than quietly exporting a bad STL.
for part in plate arm motor_base spar camera_mount standoff lollipop; do
run "$part.py"
done
run frame.py "$@"