#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" LEAN=`realpath "$DIR"/../bin/lean` LEANC=`realpath "$DIR"/../bin/leanc` StdLib=`realpath "$DIR"/../library` echo "Using lean at: $LEAN" echo "Using leanc at: $LEANC" echo "Using stdlib at: $StdLib" if [ "$#" -ne 1 ]; then echo "illegal number of parameters, usage `patch.sh `" exit 1 fi PatcherSource=$1 PatcherExe="$PatcherSource".out PatcherDir=`dirname $PatcherSource` export LEAN_PATH=$PatcherDir:$StdLib if [ ! -f $PatcherSource ]; then echo "Lean patcher source file does not exist" exit 1 fi if [ $PatcherSource -nt $PatcherExe ]; then echo "Compiling patcher program" $LEAN --cpp="$PatcherSource".cpp "$PatcherSource" if [ $? -ne 0 ]; then echo "Failed to compile $PatcherSource into C++ file" exit 1 fi $LEANC -O3 -o "$PatcherExe" "$PatcherSource".cpp if [ $? -ne 0 ]; then echo "Failed to compile C++ file $PatcherSource.cpp" exit 1 fi echo "Generated patcher executable: $PatcherExe" fi for leanFile in `find . -name '*.lean'`; do echo "Converting $leanFile" cp $leanFile $leanFile.old $PatcherExe $leanFile > $leanFile.new if [ $? -ne 0 ]; then echo "Failed to generate $leanFile.new" exit 1 fi done for leanFile in `find . -name '*.lean'`; do # TODO: finish script diff $leanFile $leanFile.new > /dev/null if [ $? -ne 0 ]; then echo "modified $leanFile" mv $leanFile.new $leanFile rm -f $leanFile.old fi done