Advertisement
Guest User

Untitled

a guest
Sep 18th, 2014
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.52 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. outfile=output.txt
  4. date +"%A, %B %d, %y %T" > ./${outfile}
  5. printf "\n" >> ${outfile}
  6.  
  7. let "errCnt=0"
  8. let "updateCnt=0"
  9. let "thisErr=0"
  10.  
  11. wd=$(pwd)
  12. hPos=$(tput cols)
  13. for path in ./*; do
  14.     [ -d "${path}" ] || continue # if not a directory, skip
  15.     dname="$(basename "${path}")"
  16.     for ph in $dname/*; do
  17.         [ -d "${ph}" ] || continue # if not a directory, skip
  18.         if [[ ":${ph}:" ==  *"printOutput"* ]]
  19.             then
  20.             continue
  21.         fi
  22.         dirname="$(basename "${ph}")"
  23.         printf "running 'make run' on ${ph}\t"
  24.         if [[ "$1" == "clean" ]]; then
  25.             make -C ${ph} clean > /dev/null
  26.         fi
  27.         makeRes=$(make -C ${ph} run 2>&1)
  28.         if [[ $makeRes == *error* ]]; then
  29.             ((errCnt++))
  30.             ((thisErr++))
  31.             tput cup $hPos $(tput lines)
  32.             echo "[FAIL]"
  33.             echo "$makeRes"
  34.         fi
  35.         printf "${ph}\n\n" >> ${outfile}
  36.         cat ${ph}/output.txt >> ${outfile}
  37.         printf "\n========\n" >> ${outfile}
  38.         mkdir -p printOutput/${ph}
  39.         if [ ${ph}/output.txt -nt printOutput/${ph}/0-main.c.pdf ]; then
  40.             for file in ${ph}/*.c; do
  41.                 srcHeader="// Project: ${ph}\n// (month.day/project)\n"
  42.                 printf "$srcHeader\n\n" | cat - $wd/${file} | expand -t 7 | pygmentize -l c | aha > source-color.html
  43.                 if [ "$(echo ${file} | grep main.c)" != "" ]
  44.                     then
  45.                     outName=$(echo ${file} | sed "s/\//\/0-/2")
  46.                     else
  47.                     outName=$(echo ${file} | sed "s/\//\/1-/2")
  48.                 fi
  49.                 xvfb-run -a wkhtmltopdf -s letter source-color.html printOutput/$outName.pdf
  50.             done
  51.             if [[ "$(ls ${ph}/*.h 2>/dev/null)" != "" ]]; then
  52.                 for file in ${ph}/*.h; do
  53.                     srcHeader="// Project: ${ph}\n// (month.day/project)\n"
  54.                     printf "$srcHeader\n\n" | cat - $wd/${file} | expand -t 7 | pygmentize -l c | aha > source-color.html
  55.                     outName=$(echo ${file} | sed "s/\//\/2-/2")
  56.                     echo printOutput/$outName.pdf
  57.                     xvfb-run -a wkhtmltopdf -s letter source-color.html printOutput/$outName.pdf
  58.                 done
  59.             else
  60.                 echo "no headers in ${ph}"
  61.             fi
  62.             if [[ "$(ls ${ph}/*.txt 2>/dev/null)" != "" ]]; then
  63.                 for file in ${ph}/*.txt; do
  64.                     srcHeader="Output for $(echo ${ph}/build/*.o)"
  65.                    
  66.                     outName=$(echo ${file} | sed "s/\//\/3-/2")
  67.                     printf "$srcHeader\n\n" | cat - $wd/${file} > printOutput/$outName
  68.                 done
  69.             else
  70.                 echo "no text files in ${ph}"
  71.             fi
  72.             ((updateCnt++))
  73.         fi
  74.         if [ $thisErr == 0 ]; then
  75.             tput cup $hPos $(tput lines)
  76.             echo "[OK]"
  77.         fi
  78.         let "thisErr=0"
  79.     done
  80. done
  81. rm -f source-color.html
  82. printf "Updated $updateCnt project(s) and encountered $errCnt error(s).\n"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement