exercises/patches/frodo.sh

60 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
#
# "How do you pick up the threads of an old life?
# How do you go on, when in your heart you begin
# to understand... there is no going back?
# There are some things that time cannot mend.
# Some hurts that go too deep, that have taken hold."
# Frodo, The Return of the King
#
#
# This script shall repair the patches for the little
# broken programs using the old patches in this directory
# first, to heal them and then create new and better
# patches, with Gollum's help.
#
set -e
# We check ourselves before we wreck ourselves.
if [ ! -f patches/frodo.sh ]
then
echo "But I must be run from the project root directory."
exit 1
fi
# Create directory of answers if it doesn't already exist.
mkdir -p answers
# Cycle through all the little broken Zig applications.
i=0
for broken in exercises/*.zig
do
((i=i+1))
# Remove the dir and extension, rendering the True Name.
true_name=$(basename "$broken" .zig)
patch_name="patches/patches/$true_name.patch"
healed_name="answers/$true_name.zig"
cp "$broken" "$healed_name"
# echo "$patch_name"
if [ -f "$patch_name" ]
then
# Apply the bandages to the wounds, grow new limbs, let
# new life spring into the broken bodies of the fallen.
echo Healing "$true_name"...
patch -i "$patch_name" "$healed_name"
# Create new prescriptions...
echo Repairing "$patch_name"...
if [ "$true_name.patch" = "999_the_end.patch" ]
then
i=999
fi
# with gollum's help!
./patches/gollum.sh $i
else
echo Cannot repair "$true_name". No patch found.
fi
done