assignments/bin/update.sh

67 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/bash
# Fail on first error
set -e
# check how we have been called
if [ ! "$0" == "bin/update.sh" ]; then
echo -e "\e[31m"
echo "💣 Das Skript muss aus dem Hauptverzeichnis des Projektes"
echo "💣 mit bin/update.sh oder bash bin/update.sh aufgerufen werden."
echo -e "\e[0m"
exit 1
fi
# Check the integrity of the .assignments directory
if [ -d ".assignments" ] && [ ! -d ".assignments/.git" ]; then
echo -e "\e[31m"
echo "Nicht korrektes .assignments-Verzeichnis. Wird gelöscht."
echo "Bitte achten Sie darauf, das .assignments-Verzeichnis nicht"
echo "einzuchecken."
echo -ne "\e[0m"
rm -rf ".assignments"
fi
# Clone repo if not already present
if [ ! -d ".assignments" ]; then
echo -e "\e[32m"
echo "Clone Repository mit den Aufgaben"
echo -ne "\e[0m"
git clone gitea@gitty.informatik.hs-mannheim.de:pr2-lecture-STG/assignments.git .assignments
mkdir -p sources/src/main/java
fi
# Sync exercises with local directory
echo -e "\e[32m"
echo "---------------------------------------------------------------"
echo "Hole neue Aufgaben und Quelltexte "
echo "---------------------------------------------------------------"
echo -ne "\e[0m"
(cd .assignments && git pull origin main)
rsync --ignore-existing -raz .assignments/sources/ sources/
for dir in .assignments/Assignment_*; do
rsync --ignore-existing -raz "$dir" ./
done
# Assignment files
rsync --ignore-existing -raz --include='Assignment_*' --exclude='*' .assignments/* ./
# Libraries
rsync -raz .assignments/sources/lib/ ./sources/lib
# Main readme
cp .assignments/readme.md README.md
# Update scripts
cp .assignments/bin/submit.sh bin/submit.sh
if [ -f .assignments/bin/update.sh ]; then
# Remove myself
rm bin/update.sh
# Copy the new version at the old location
cp .assignments/bin/update.sh bin/update.sh
fi