#!/bin/sh INDIVID_FOLDER="recettes_individ" INDIVID_FOLDER_PDF="recettes_individ_pdf" CHAPTERS="chapters" CHAPTERS2="chapters2" MERGE="chapters_merge" prepare_individ() { individ_source="$1" individ_dest="$2" cat > "$individ_dest" <> "$individ_dest" cat >> "$individ_dest" < /dev/null ret=$? if [ $ret -eq 1 ]; then failindex=$(echo ${failindex}+1 | bc); fi; syntax_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" } if [ $# -eq 0 ]; then TARGET_BUILD="all" else TARGET_BUILD="$1" fi # We have to garantee that the destination folders will be there ... if [ ! -d $INDIVID_FOLDER ]; then makedir $INDIVID_FOLDER fi if [ ! -d $INDIVID_FOLDER_PDF ]; then makedir $INDIVID_FOLDER_PDF fi if [ ! -d $MERGE ]; then makedir $MERGE fi case "$TARGET_BUILD" in all) echo "Building the whole book" rm -f "$CHAPTERS"/*.tex "$CHAPTERS2"/*.tex echo "Processing replacement rules" ./replacements.pl $(find "$CHAPTERS" "$CHAPTERS2" -name '*.tex') echo "Preparing build files" for chapter in $(find "$CHAPTERS"/* "$CHAPTERS2"/* -prune -type d); do perl tri.pl "$chapter".tex "$chapter" done; for chapter in $(find "$CHAPTERS"/* "$CHAPTERS2"/* -prune -type d | awk -F'/' '{print $2;}' | sort | uniq); do perl tri.pl "$MERGE"/"$chapter".tex "$CHAPTERS"/"$chapter" "$CHAPTERS2"/"$chapter" done; echo "Building book I" pdflatex recettes.tex > /dev/null makeindex recettes > /dev/null 2> /dev/null pdflatex recettes.tex > /dev/null echo "Building book II" pdflatex recettes2.tex > /dev/null makeindex recettes2 > /dev/null 2> /dev/null pdflatex recettes2.tex > /dev/null echo "Building complete book" pdflatex recettes_merge.tex > /dev/null makeindex recettes_merge > /dev/null 2> /dev/null pdflatex recettes_merge.tex > /dev/null ;; clean) echo "Cleaning the build files" rm -f "$CHAPTERS"/*.tex "$CHAPTERS2"/*.tex "$MERGE"/*.tex; rm -f *.aux *.log *.ind *.ilg *.idx *.toc ;; individ) echo "Building individual recipes"; for chapter in $(find "$CHAPTERS"/* "$CHAPTERS2"/* -prune -type d); do for recette in $(find "$chapter"/ -name '*.tex'); do recette_base=$(basename "$recette") echo "Compiling $recette_base" prepare_individ "$recette" "$INDIVID_FOLDER"/"$recette_base"; pdflatex "$INDIVID_FOLDER"/"$recette_base" -output-directory "$INDIVID_FOLDER_PDF" > /dev/null rm $(basename "$recette_base" .tex).* done done ;; individ-clean) echo "Cleaning the individual-recipes"; rm -f "$INDIVID_FOLDER"/* ;; syntax-check) echo "Checking syntax for books" syntax_check $CHAPTERS syntax_check $CHAPTERS2 ;; *) echo "Build target '$TARGET_BUILD' not recognized" >&2; echo "Recognized options are : $0 [all | clean | individ | individ-clean | syntax-check]" echo "If no build target is provided, 'all' is assumed" return 10; ;; esac