PLFA agda exercises
#!/usr/bin/env bash

# Sends out marks for students based on the folder structure used by Submit,
# the coursework submission system used in the School of Informatics at the
# University of Edinburgh.
#
# This script assumes the following folder structure:
#
#   $DIR/sXXXXXXX/$CW/$FILE
#
# The variable DIR refers to the directory passed in as an argument to the
# script. The variable XXXXXXX refers to the student ID, and it is assumed
# that
#
#   sXXXXXXX@sms.ed.ac.uk
#
# is a valid email address. The variable $CW refers to the coursework
# of which the students are meant to be notified (e.g., cw1). The directory
# DIR/sXXXXXXX/$CW/ should only contain a single file, which should be
# specified using the FILE parameter.
#
# Usage:
#
#   ./send_marks.sh [DIR] [CW] [FILE]

DIR="$1"
shift

CW="$1"
shift

FILE="$1"
shift

for ATTACHMENT in "${DIR%/}/s"*"/$CW/$FILE"; do
    SUBJ="Mark for coursework $CW"
    BODY=""
    SID=$(echo "$ATTACHMENT" | sed 's|.*/\(s[0-9]\{7\}\)/.*|\1|')
    ADDR="$SID@sms.ed.ac.uk"
    CMD="echo \"$BODY\" | mail -c wadler@inf.ed.ac.uk -s \"$SUBJ\" -a \"$ATTACHMENT\" \"$ADDR\""
    echo "You are about to run the following command:"
    echo -e "\n$CMD\n"
    read -p "Are you sure? " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]
    then
        eval "$CMD"
    fi
done