#!/bin/bash # assemble-all-pages: generates a set of HTML pages with variable parts. # Each page is built from a template and one or several includes, as usual; # in addition, several versions of a page can be built from a single # template which contains all the variable parts, by deleting irrelevant # text. # The templates have inclusion markers (similar to SSI directives, except # for the lack of "#") to indicate where the constant parts are to be # inserted, and deletion markers to identify the borders of each deletion # and indicate which page(s) the text between those borders belongs to. # The script processes all the templates in the working directory. The # pages are created in the parent directory. # Ideally, any modifications should be done to the templates or includes, # not to the final pages. # All the ingredients are in [...]/enc/[lang]/kitchen/. # Script: assemble-all-pages # Templates: confirmation.t.html # index.t.html (contains variable parts for mac and windows) # infographic.t.html # next_steps.t.html # Includes: footer.html # head.html (contains 2 alternate sets of keywords) # javascript.html # translist.html # To generate the pages in [...]/enc/[lang]/: # - in the terminal, cd to [...]/enc/[lang]/kitchen/ and enter # $ ./assemble-all-pages # - alternatively, display the kitchen/ directory in the file browser # (not the parent directory) and double-click on the script. # And if anything goes wrong, you can do a git reset, right? ;-) # ========================================================================== set -e # Create temporary files. names=$(mktemp -t aap.XXXXXX) || exit 1 list=$(mktemp -t aap.XXXXXX) || exit 1 before=$(mktemp -t aap.XXXXXX) || exit 1 after=$(mktemp -t aap.XXXXXX) || exit 1 trap 'rm -f "$names" "$list" "$before" "$after"' EXIT # List all the templates in the working directory. if ls *.t.html > $names 2>/dev/null; then sed -i 's,\.t\.html$,,' $names else echo "There is no template in this directory." && exit 1 fi ## Add the includes to the templates. while read name; do # Make sure there is a blank line before the first include, otherwise # it will not be added properly. sed '1i\\n' $name.t.html > ../$name.html # List the includes. grep '^