#!/bin/bash

# The original examination project skeleton
PROJECTREF=~/GoikLectures/Klausuren/Sd1/2019summer/Exam

# File representative of archive integrity
SRCREPRESENT=src/main/java/de/hdm_stuttgart/mi/sd1/task2/ChangeAmount.java

# The executable jar archive containing unit tests
TESTJAR=sd1_2019summer_exam-0.9-fat-tests.jar

# Strings like e.g. "Aufgabe 2" referencing "Aufgabe 2: (30/50)"
declare -a MARKERS=("Task 1" "Task 2")

# Hands off beyond this line
#--------------------------------------------------------------------------------------------

evaluateProject() {
    
    zip=$1
    fbname=$(basename "$zip" .zip)

    rm -rf /tmp/Reference
    cp -r $PROJECTREF /tmp/Reference
    pushd /tmp/Reference  1> /dev/null
    mvn -T4  clean > /dev/null 2>&1
    rm -rf src/main/java
    popd 1> /dev/null

    mkdir Unpack;pushd Unpack  1> /dev/null
    unzip ../$fbname.zip > /dev/null
    pomFileCount=`find . -name pom.xml|wc -l`
    if [[ 1 = $pomFileCount ]]; then
	projectDir=`find . -name pom.xml`
	projectDir=${projectDir%/*}

	if [ -f "${projectDir}"/$SRCREPRESENT ]; then
	    cp -r /tmp/Reference .
	    cp -r "$projectDir"/src/main/java Reference/src/main
	    pushd Reference  1> /dev/null
	    mvn -T4 compile test-compile > /dev/null 2>&1
	    if [ $? -eq 0 ] ; then
		mvn -T4 -Dmaven.test.skip=true package > /dev/null 2>&1
		result=""

		mvnOutput=`java -jar target/$TESTJAR`

		#      for mark in "${MARKERS[@]}"; do
		#        result+=`java -jar target/$TESTJAR | grep "$mark"|sed 's/^[ ]*//'`
		#        result+="  "
		#      done
		result=$mvnOutput
		
	    else
		result="$projectDir does not compile"
	    fi
	    popd  1> /dev/null
	    echo "$fbname"
	    echo "$result"
	    
	    #Cleanup user project 
	    pushd "$projectDir"  1> /dev/null
	    rm -rf *.iml .idea *.log *.zip
	    mvn clean > /dev/null 2>&1
	    popd  1> /dev/null
	    rm ../"$fbname".zip
	    zip -r ../"$fbname".zip "$projectDir" > /dev/null 2>&1
	else 
	    echo "$fbname : ${projectDir}/$SRCREPRESENT not found" 
	    exit 1
	fi
    else 
	echo "$fbname : Found more than one directory component" 
	exit 1
    fi
    popd 1> /dev/null # return from Unpack
    rm -rf Unpack

    echo "-----------------------------------------------------"
    uid=`echo $1| sed -e s/.zip//` 
    grep $uid ~/C/HdM/tmp/bonusprojekte.csv
    echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
}

for zip in "$@"
do
    evaluateProject $zip
done


#end