fr: templates for all 6 pages and new script "assemble-all-pages"; fix a few errors...
[enc-live.git] / fr / kitchen / assemble-all-pages
CommitLineData
d2a7098b
TG
1#!/bin/bash
2
3# assemble-all-pages: includes the constant parts into all the HTML
4# templates in the working directory.
5
6# The name of a page is NAME.html and the name of the template is
7# NAME.t.html. The inclusion markers in the template are similar to
8# SSI directives, but for the "#".
9
10# The script is in the same directory as all the pieces. It can be
11# launched by double-clicking on it provided the path to the working
12# directory is set at the first line.
13
14# =====================================================================
15
16wdir=~/GNU/enc/fr/kitchen
17
18set -e
19cd $wdir
20
21# Create temporary files.
22before=$(mktemp -t h2p.XXXXXX) || exit 1
23after=$(mktemp -t h2p.XXXXXX) || exit 1
24trap 'rm -f "$before" "$after"' EXIT
25
26# List all the templates in the working directory.
27if ! ls *.t.html > template-list ; then
28 echo "There is no template in this directory." && exit 1
29fi
30
31# Process each template of the list.
32while read template; do
33
34 page=${template/.t/}
35 echo $page
36
37 # Make sure there is a blank line before the first include, otherwise
38 # it will not be added properly.
39 cp $template $page && sed -i '1i\\n' $page
40
41 # List the includes.
42 grep '<!-- include virtual="' $page |
43 sed 's,^.*include virtual="\([^"]\+\).*$,\1,' > include-list
44
45 # Add the listed includes and remove the marker.
46 while read include; do
47 sed "1,/<!-- include virtual=\"$include\"/!d" $page > $before
48 sed "1,/<!-- include virtual=\"$include\"/d" $page > $after
49 if [ -f "$include" ]; then
50 cat $before $include $after > $page
51 else
52 echo "$include is missing." && exit 1
53 fi
54 sed -i "/<!-- include virtual=\"$include\"/d" $page
55 done < include-list
56
57 # One item in Section 2a (Troubleshooting) of index.html has to be
58 # removed from mac.html and windows.html.
59 if [ "$page" == "mac.html" ] || [ "$page" == "windows.html" ]; then
60 sed -i '/<!-- START DELETION -->/,/<!-- END DELETION -->/d' $page
61 elif [ "$page" == "index.html" ]; then
62 sed -i '/DELETION -->/d' $page
63 fi
64
65 # Delete extra blank lines at the end.
66 sed -i ':a /^\n*$/ {$d; N; ba}' $page
67
68 # Move the complete page to its final location.
69 mv $page ../$page
70
71done < template-list
72exit 0