Skip to content
Snippets Groups Projects
.create_single_patch.sh 1.63 KiB
Newer Older
# SPDX-FileCopyrightText: Copyright © DuMux-Course contributors, see AUTHORS.md in root folder
# SPDX-License-Identifier: GPL-3.0-or-later


#This is to be executed at the root folder of dumux-course. Via the necessary option -x you name the exercise folder you would like to create a patch on. E.g.:
#./.create_single_patch.sh -x exercise-basic

#read in the parameter -x from the terminal
while getopts "x:" opt
do
  case $opt in
    x)
      exerciseName=$OPTARG
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
  esac
done

#if -x option is empty, throw an error
if [ -z "$exerciseName" ]
then
  echo "ERROR: -x option must be set"
  exit 1
fi

#check if the exercise-folder exists. Should always exist, as we iterate over them
if [ ! -d exercises/$exerciseName ]
then
  echo "exercises/$exerciseName does NOT exist. Terminating."
  exit 1
fi

#check if the respective solution to the exercise exists. If not, check if it is required. In any case where the answer is no, set the flag to false to only generate an empty patch
if [ ! -d exercises/solution/$exerciseName ]
then
  echo "ERROR: exercises/$exerciseName exists but exercises/solution/$exerciseName does NOT exist."

  # Prompt the user for input - is this solution required?
  while true; do
    read -p "Does $exerciseName require a solution (y/n)?" yn
    case $yn in
      [Yy]* ) echo "Please create a solution to the exercise first."; exit;;
      [Nn]* ) echo "Continuing..."; break;;
      * ) echo "Please answer y or n.";;
    esac
  done
fi

diff -ruN exercises/$exerciseName/ exercises/solution/$exerciseName > .patches/$exerciseName/$exerciseName.patch