#! /usr/bin/env bash

# Import email addresses into roster.txt from Sakai gradebook export to be named as fromsakai.csv (variation on sakai2grades).

# $var:t    ${var##*/}
# $var:h    ${var%/*}
# $var:e    ${var##*.}
# $var:r    ${var%.*}

debug=0

tmpfile1=/tmp/eaddrsfromsakai1.$USER.$$ # Text version of fromsakai.csv
tmpfile2=/tmp/eaddrsfromsakai2.$USER.$$ # Student names from Sakai
tmpfile3=/tmp/eaddrsfromsakai3.$USER.$$ # Student names from roster.txt
tmpfile4=/tmp/eaddrsfromsakai4.$USER.$$ # EADDR column from roster.txt
tmpfile5=/tmp/eaddrsfromsakai5.$USER.$$ # Student UVIDs from Sakai

if [[ $# -gt 0 ]]; then
  echo "Usage: eaddrsfromsakai"
  exit 1
fi

eaddrcollet=`sed -n 's+.* \([A-Z][A-Z]*\)[0-9][0-9]* = "EADDR"+\1+p' grades.sc` # Like gradesinsc but w/o limiting to HW

if (( $debug )); then echo eaddrcollet: $eaddrcollet; fi

sed 's+\[[^[]*\]++g' fromsakai.csv | csv2txt | sed 's+Student-Name+Name+' | tee $tmpfile1 | excol "Name" | sed 's+^ *++' | sed 's+,-+,+' | sed 's+\(.*\),\([^-]*\)-.*+\1,\2+' | tail +2 >$tmpfile2
if (( $debug )); then echo "head of fromsakai csv2txt"; head -5 $tmpfile1; fi
if (( $debug )); then echo "head of fromsakai condensed Names"; head -5 $tmpfile2; fi
cat roster.txt | excol NAME | sed 's+^ *++' | sed 's+ +-+g' | sed 's+,-+,+' | sed 's+\(.*\),\([^-]*\)-.*+\1,\2+' | tail +2 >$tmpfile3
if (( $debug )); then echo "head of roster.txt condensed names"; head -5 $tmpfile3; fi
if ( diff -b $tmpfile2 $tmpfile3 ); then # want same IDs in roster.txt & fromsakai.csv
  cat roster.txt | excol -v EADDR > $tmpfile4
  del . roster.txt # back it up in case of messup
  cat $tmpfile1 | excol Student-ID | sed 's+^ *++' | sed 's+$+@luc.edu+' >$tmpfile5
  eaddrblanks=`maxlinelen $tmpfile5 | head -1 | sed 's+.....++' | sed 's+.+ +g'`
  paste -d ' ' $tmpfile4 $tmpfile5 | sed 's+Student-ID@luc.edu+'"$eaddrblanks"'EADDR+' >roster.txt
  echo "Modified roster.txt."
else
  echo "Mismatch of IDs in files; roster.txt not changed."
  exit
fi

if (( ! $debug )); then rm -f /tmp/eaddrsfromsakai*.$USER.$$; fi
