Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

34 lines
903 B
Bash
Executable File

#! /usr/bin/env bash
#
# Copyright (c) 2020-now by the Zeek Project. See LICENSE for details.
#
# A helper script for manual diffing of two AST debug renderings, ignoring any
# content that's not stable between subsequent executions.
function filter
{
# 1. Remove node addresses, including optional brackets/parentheses (e.g., [@i:60000266c520])
# 2. Remove source locations (e.g., "(foo.spicy:2:3)").
# 3. Replace node IDs (e.g., %42) with `%xxx`
sed 's/ \{0,\}[[(]\{0,\}@.:[0-9a-z]*[])]\{0,\}//g' | \
sed 's/ \{0,\}([^)]*:[0-9-]*:[0-9-]*)//g' | \
sed 's/path="[^"]*"/path="xxx"/g' | \
sed 's/%[0-9-]\{1,\}/%xxx/g'
}
if [ $# != 2 ]; then
echo "usage: $(basename $0) <ast1> <ast2>"
exit 1
fi
tmp1=/tmp/$(basename $0).$$.1
tmp2=/tmp/$(basename $0).$$.2
trap "rm -f ${tmp1} ${tmp2}" EXIT
cat $1 | filter >${tmp1}
cat $2 | filter >${tmp2}
diff -u ${tmp1} ${tmp2}