Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- outfile=output.txt
- date +"%A, %B %d, %y %T" > ./${outfile}
- printf "\n" >> ${outfile}
- let "errCnt=0"
- let "updateCnt=0"
- let "thisErr=0"
- wd=$(pwd)
- hPos=$(tput cols)
- for path in ./*; do
- [ -d "${path}" ] || continue # if not a directory, skip
- dname="$(basename "${path}")"
- for ph in $dname/*; do
- [ -d "${ph}" ] || continue # if not a directory, skip
- if [[ ":${ph}:" == *"printOutput"* ]]
- then
- continue
- fi
- dirname="$(basename "${ph}")"
- printf "running 'make run' on ${ph}\t"
- if [[ "$1" == "clean" ]]; then
- make -C ${ph} clean > /dev/null
- fi
- makeRes=$(make -C ${ph} run 2>&1)
- if [[ $makeRes == *error* ]]; then
- ((errCnt++))
- ((thisErr++))
- tput cup $hPos $(tput lines)
- echo "[[0;31;40mFAIL[0m]"
- echo "[0;31;40m$makeRes[0m"
- fi
- printf "${ph}\n\n" >> ${outfile}
- cat ${ph}/output.txt >> ${outfile}
- printf "\n========\n" >> ${outfile}
- mkdir -p printOutput/${ph}
- if [ ${ph}/output.txt -nt printOutput/${ph}/0-main.c.pdf ]; then
- for file in ${ph}/*.c; do
- srcHeader="// Project: ${ph}\n// (month.day/project)\n"
- printf "$srcHeader\n\n" | cat - $wd/${file} | expand -t 7 | pygmentize -l c | aha > source-color.html
- if [ "$(echo ${file} | grep main.c)" != "" ]
- then
- outName=$(echo ${file} | sed "s/\//\/0-/2")
- else
- outName=$(echo ${file} | sed "s/\//\/1-/2")
- fi
- xvfb-run -a wkhtmltopdf -s letter source-color.html printOutput/$outName.pdf
- done
- if [[ "$(ls ${ph}/*.h 2>/dev/null)" != "" ]]; then
- for file in ${ph}/*.h; do
- srcHeader="// Project: ${ph}\n// (month.day/project)\n"
- printf "$srcHeader\n\n" | cat - $wd/${file} | expand -t 7 | pygmentize -l c | aha > source-color.html
- outName=$(echo ${file} | sed "s/\//\/2-/2")
- echo printOutput/$outName.pdf
- xvfb-run -a wkhtmltopdf -s letter source-color.html printOutput/$outName.pdf
- done
- else
- echo "no headers in ${ph}"
- fi
- if [[ "$(ls ${ph}/*.txt 2>/dev/null)" != "" ]]; then
- for file in ${ph}/*.txt; do
- srcHeader="Output for $(echo ${ph}/build/*.o)"
- outName=$(echo ${file} | sed "s/\//\/3-/2")
- printf "$srcHeader\n\n" | cat - $wd/${file} > printOutput/$outName
- done
- else
- echo "no text files in ${ph}"
- fi
- ((updateCnt++))
- fi
- if [ $thisErr == 0 ]; then
- tput cup $hPos $(tput lines)
- echo "[[0;32;40mOK[0m]"
- fi
- let "thisErr=0"
- done
- done
- rm -f source-color.html
- printf "Updated $updateCnt project(s) and encountered $errCnt error(s).\n"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement