#!/usr/bin/env bash set -euo pipefail REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)" if ! command -v openscad &>/dev/null; then echo "Error: openscad not found in PATH" >&2 exit 1 fi count=0 skipped=0 while IFS= read -r -d '' scad_file; do dir="$(dirname "$scad_file")" name="$(basename "$scad_file" .scad)" output="${dir}/${name}.stl" if [[ -f "$output" && "$output" -nt "$scad_file" ]]; then echo "Skipping ${scad_file} (STL is up to date)" skipped=$((skipped + 1)) continue fi echo "Rendering ${scad_file} -> ${output}" openscad --render -o "$output" "$scad_file" count=$((count + 1)) done < <(find "$REPO_DIR" -name '*.scad' -not -path "$REPO_DIR/lib/*" -print0) echo "Generated ${count} STL file(s), skipped ${skipped}."