#!/bin/sh printsuccess=0 printfail=1 folder="chapters" while [ $# -gt 0 ] do case "$1" in --success) printsuccess=1;; --fail) printfail=1;; --nosuccess) printsuccess=0;; --nofail) printfail=0;; --folder) folder="$2"; shift;; *) echo >&2 \ "usage: $0 [--success] [--fail] [--nosuccess] [--nofail] [--folder path]" error exit 1;; esac shift done result() { if [ $1 -eq 1 ]; then if [ $printfail -eq 1 ]; then printf "\033[01;31m[FAIL-%s]\t%s\033[00m\n" $2 $i fi else if [ $printsuccess -eq 1 ]; then printf "\033[01;32m[PASS-%s]\t%s\033[00m\n" $2 $i fi fi; } failligne=0 failtemps=0 failportions=0 failindex=0 for i in `ls ${folder}/*/*.tex`; do cat $i | sed 1q | perl -ne 'if (m/^\\begin{recipe}{.*?}{.*?}{.*?}$/) { exit 0; } else { exit 1; }'; ret=$? if [ $ret -eq 1 ]; then failligne=$(echo ${failligne}+1 | bc); fi; result $ret "LIGNE" cat $i | sed 1q | perl -ne 'if (m/{(\d+(\d+)?\s((\w|[éèà])+\s?)+(\s\+\s)?)+}$/) { exit 0; } else { exit 1; }'; ret=$? if [ $ret -eq 1 ]; then failtemps=$(echo ${failtemps}+1 | bc); fi; result $ret "TEMPS" regexpains='(\d+\smiches?)|(\d+\spains?(\s\w+\s)*(\s?\d+g)?)' regexportions='(\d+\sportions?)' regexgateaux='(1\s(plaque)|(moule).*cm)' regexmisc='(\d+(-\d+)?\s(\w+\s)*((pièces?)|(bacs?)|(pots?)))' cat $i | sed 1q | perl -ne "if (m/{$regexpains|$regexportions|$regexgateaux|$regexmisc}/) { exit 0; } else { exit 1; }"; ret=$? if [ $ret -eq 1 ]; then failportions=$(echo ${failportions}+1 | bc); fi; result $ret "PORTIONS" cat $i | grep "\index{" > /dev/null ret=$? if [ $ret -eq 1 ]; then failindex=$(echo ${failindex}+1 | bc); fi; result $ret "INDEX" done echo "Test LIGNE (ligne 'recipe' sur une ligne avec bon nombre d'arguments) : " $failligne "erreurs" echo "Test TEMPS (le paramètre de temps pour la recette est présent et bien formaté) :" $failtemps "erreurs" echo "Test PORTIONS (les portions sont sous un format listé)" $failportions "erreurs" echo "Test INDEX (une entrée dans l'index est écrite)" $failindex "erreurs"