|
|
- #!/bin/bash
-
- # change working dir to where this script resides in
- pushd `dirname "$0"` > /dev/null
-
- if [ -n "$1" ]; then
- RESULT_SAVETO=`realpath $1`
- fi
- BASE_COMMIT=1d8c85670d03ce745e32bbc57147835b210fe560
- if [ -n "$2" ] && git log $2 > /dev/null 2>&1; then
- BASE_COMMIT=$2
- elif ! git log $BASE_COMMIT > /dev/null 2>&1; then
- echo "No valid base commit found."
- exit 0
- fi
- LABS=`git diff $BASE_COMMIT --stat | grep -o "lab[0-9]" | uniq`
- COMMIT=`git rev-parse HEAD`
-
- if [ "$LABS" = "" ]; then
- echo "No updated lab found. Skip."
- exit 0
- fi
-
- failed=0
-
- pwd=`pwd`
- summary=$pwd/.score_summary
-
- echo -n > $summary
- for lab in $LABS; do
- pushd $lab > /dev/null
- if ! make grade > .score 2>&1; then
- failed=`echo $lab | grep -o [0-9]`
- fi
- if [ -n "$RESULT_SAVETO" ]; then
- mkdir -p $RESULT_SAVETO/$COMMIT/$lab
- mv .score .score_orig
- ../tools/split_score_log.py .score_orig > .score
- for i in .*.log .*.error; do
- cp $i $RESULT_SAVETO/$COMMIT/$lab/${i#.}
- done
- fi
- score=`egrep -o "Score: [0-9]+/[0-9]+" .score`
- echo "$lab $score" >> $summary
- make clean > /dev/null
- popd > /dev/null
- done
-
- echo "Labs with changes detected: " $LABS
- echo
- echo "============================== Summary =============================="
- cat $summary
- rm $summary
- echo
-
- for lab in $LABS; do
- echo "================================ $lab ==============================="
- cat $lab/.score
- done
-
- find . -name '.*' -delete
-
- popd > /dev/null
-
- exit $failed
|