2025-08-24 01:58:41 +09:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
|
2025-11-06 15:41:52 +09:00
|
|
|
echo "Usage: $0 <input.hako> [output.txt]" >&2
|
2025-08-24 01:58:41 +09:00
|
|
|
echo "Dumps Builder-only MIR (--no-optimize) for reproducible snapshots." >&2
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
INPUT="$1"
|
|
|
|
|
OUTFILE="${2:-}"
|
|
|
|
|
|
|
|
|
|
if [ ! -f "$INPUT" ]; then
|
|
|
|
|
echo "Input not found: $INPUT" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
BIN="${NYASH_BIN:-./target/release/nyash}"
|
|
|
|
|
if [ ! -x "$BIN" ]; then
|
|
|
|
|
echo "nyash binary not found at $BIN. Build first: cargo build --release" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
CMD=("$BIN" --dump-mir --mir-verbose --no-optimize "$INPUT")
|
|
|
|
|
|
|
|
|
|
if [ -n "${NYASH_MIR_VERBOSE_EFFECTS:-}" ]; then
|
|
|
|
|
CMD=("$BIN" --dump-mir --mir-verbose --mir-verbose-effects --no-optimize "$INPUT")
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -n "$OUTFILE" ]; then
|
|
|
|
|
mkdir -p "$(dirname "$OUTFILE")"
|
2025-08-26 05:49:23 +09:00
|
|
|
# Filter noisy plugin/runtime banners to stabilize snapshots
|
|
|
|
|
NYASH_CLI_VERBOSE=1 "${CMD[@]}" \
|
|
|
|
|
| grep -Ev '^(\[PluginLoaderV2\]|\[FileBox\]|Net plugin:)' \
|
|
|
|
|
| sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' > "$OUTFILE"
|
2025-08-24 01:58:41 +09:00
|
|
|
echo "Wrote MIR snapshot: $OUTFILE"
|
|
|
|
|
else
|
2025-08-26 05:49:23 +09:00
|
|
|
NYASH_CLI_VERBOSE=1 "${CMD[@]}"
|
2025-08-24 01:58:41 +09:00
|
|
|
fi
|