#!/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