60 lines
1.6 KiB
Bash
Executable file
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
|
|
|