The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/bin/bash

# Update lib/Pugs/Grammar/Rule.pmc using lib/Pugs/Grammar/Rule2.pm
# util/update-rule-pmc
# util/update-rule-pmc install
# util/update-rule-pmc revert
# util/udpate-rule-pmc update

echo "WARNING: This script is out-of-date; please use util/update-rule-pmc-new instead"
if [ "$1" == "install" ]; then
    echo "cp tmp/Rule.pmc lib/Pugs/Grammar/Rule.pmc"
    cp tmp/Rule.pmc lib/Pugs/Grammar/Rule.pmc
    exit
elif [ "$1" == "revert" ]; then
    git checkout lib/Pugs/Grammar/Rule.pmc
    exit
elif [ "$1" != "update" ] && [ -n "$1" ]; then
    echo "Unknown operation $1 (only 'install', 'revert', and 'update' are supported)"
    exit 1
fi

mkdir -p tmp

echo "Generating lib/Pug/Grammar/Rule2.pmc..."
rm lib/Pugs/Grammar/Rule2.pmc > /dev/null 2>&1
perl -I../Pugs-Compiler-Perl6/lib -Ilib lib/Pugs/Grammar/Rule2.pm 2>&1 | grep -v "redefined at"

echo "Generating tmp/Rule.pmc..."
perl util/patch-rule-pmc.pl lib/Pugs/Grammar/Rule2.pmc > tmp/Rule.pmc

echo "Validating tmp/Rule.pmc..."
perl -Ilib tmp/Rule.pmc

sed s/$pad{I[0-9][0-9]*}/$pad{Ixxxx}/ tmp/Rule.pmc > tmp/tmp
sed s/$I[0-9][0-9]*/$Ixxxx/ tmp/tmp > tmp/new

sed s/$pad{I[0-9][0-9]*}/$pad{Ixxxx}/ lib/Pugs/Grammar/Rule.pmc > tmp/tmp
sed s/$I[0-9][0-9]*/$Ixxxx/ tmp/tmp > tmp/old

rm tmp/tmp

echo "Diff is in tmp/pmc.diff"
diff -uTb tmp/old tmp/new > tmp/pmc.diff

if [ "$1" == "update" ]; then
    echo 'cp tmp/Rule.pmc lib/Pugs/Grammar/Rule.pmc'
    cp tmp/Rule.pmc lib/Pugs/Grammar/Rule.pmc
else
    echo '# cp tmp/Rule.pmc lib/Pugs/Grammar/Rule.pmc'
    # cp tmp/Rule.pmc lib/Pugs/Grammar/Rule.pmc
    echo "Hint: use '$0 install' to do the cp for real"
    echo "Hint: use '$0 revert' to revert an install"
fi