#!/usr/bin/env bash # # Book compiler # # Parameters BASENAME="`basename $0 | sed -e 's/\(.\)/\U\1/'`" DIRNAME="`dirname $0`" BASEDIR="$DIRNAME/.." CONTENT="content/sections" OUTPUT="${1:-book}" REVISION="$2" DATE="$3" LANG="`grep lang _common.yml _book.yml _notes.yml 2> /dev/null | tail -1 | cut -d : -f 3 | sed -e 's/"//g' -e 's/ //g'`" # Set the language if [ -z "$LANG" ]; then LANG="en" fi # Set structure and templates STRUCTURE="structure/book/$LANG" TEMPLATES="templates/book/$LANG" # Remove any dangling output files rm -f $OUTPUT.md $OUTPUT.Rmd # Bookup config cat _book.yml >> $OUTPUT.md ; echo "" >> $OUTPUT.md cat _common.yml >> $OUTPUT.md ; echo "" >> $OUTPUT.md # Bibliography find -name _biblio.yml | while read file; do cat $file >> $OUTPUT.md ; echo "" >> $OUTPUT.md done # YAML headers for file in $BASEDIR/$STRUCTURE/00*.yml; do cat $file >> $OUTPUT.md echo "---" >> $OUTPUT.md done # Markdown headers for file in $BASEDIR/$STRUCTURE/00*.md; do cat $file >> $OUTPUT.md echo "" >> $OUTPUT.md done # Sections if [ -d "$CONTENT" ]; then find $CONTENT -type f | grep '\.md$' | sort | while read file; do cat $file >> $OUTPUT.md echo "" >> $OUTPUT.md cat $BASEDIR/$TEMPLATES/references.md >> $OUTPUT.md echo "" >> $OUTPUT.md done fi # Footers for file in $BASEDIR/$STRUCTURE/99*.md; do cat $file >> $OUTPUT.md echo "" >> $OUTPUT.md done # Revision information sed -i -e "s|%%revision%%|$REVISION|g" -e "s|%%date%%|$DATE|g" $OUTPUT.md # Post-processing if [ -e "snippets/terminology.sed" ]; then sed -i -f snippets/terminology.sed $OUTPUT.md fi # Symlink as a Bookdown source ln -sf $OUTPUT.md $OUTPUT.Rmd