47 lines
954 B
Bash
Executable File
47 lines
954 B
Bash
Executable File
#!/bin/bash
|
|
# Validate an OpenSCAD file for syntax errors
|
|
# Usage: validate.sh input.scad
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
source "$SCRIPT_DIR/common.sh"
|
|
|
|
check_openscad
|
|
|
|
if [ $# -lt 1 ]; then
|
|
echo "Usage: $0 input.scad"
|
|
exit 1
|
|
fi
|
|
|
|
INPUT="$1"
|
|
|
|
if [ ! -f "$INPUT" ]; then
|
|
echo "Error: File not found: $INPUT"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Validating: $INPUT"
|
|
|
|
# Create temp file for output
|
|
TEMP_OUTPUT=$(mktemp /tmp/openscad_validate.XXXXXX.echo)
|
|
trap "rm -f $TEMP_OUTPUT" EXIT
|
|
|
|
# Run OpenSCAD with echo output (fastest way to check syntax)
|
|
# Using --export-format=echo just parses and evaluates without rendering
|
|
if $OPENSCAD -o "$TEMP_OUTPUT" --export-format=echo "$INPUT" 2>&1; then
|
|
echo "✓ Syntax OK"
|
|
|
|
# Check for warnings in stderr
|
|
if [ -s "$TEMP_OUTPUT" ]; then
|
|
echo ""
|
|
echo "Echo output:"
|
|
cat "$TEMP_OUTPUT"
|
|
fi
|
|
|
|
exit 0
|
|
else
|
|
echo "✗ Validation failed"
|
|
exit 1
|
|
fi
|