summaryrefslogtreecommitdiff
path: root/bin/update_html
blob: 7777c7895984db56e9b749fb89f930b732adeb5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash

### This script finds all .t2t (txt2tags) files and updates the corresponding
### .html file, if it is out-of-date.

config=".txt2tagsrc"
pre="_pre.html"
post="_post.html"
tmp="tmp.html"

find . -name '*.t2t' | while read t2t ; do
  html="${t2t%.t2t}.html"
  if [ "$t2t" -nt "$html" ] ; then
    txt2tags --config-file="$config" --target=html "$t2t"
    cat $pre $html $post > $tmp
    mv $tmp $html
    head1=$(head -n 1 "$t2t")
    head2=$(tail -n+2 "$t2t" | head -n 1)
    head3=$(tail -n+3 "$t2t" | head -n 1)

    # Replace "headers" from t2t in final HTML
    # Documentation here: https://txt2tags.org/userguide/headerarea
    if [ -n "$head1" ] ; then
      sed -i.bak "s/{{HEAD1}}/$head1/" "$html" && rm "$html.bak"
    else
      sed -i.bak -E "s/<.+{{HEAD1}}.+>//" "$html" && rm "$html.bak"
      continue # empty headers
    fi
    if [ -n "$head2" ] ; then
      sed -i.bak "s/{{HEAD2}}/$head2/" "$html" && rm "$html.bak"
    else
      sed -i.bak -E "s/<.+{{HEAD2}}.+>//" "$html" && rm "$html.bak"
    fi
    if [ -n "$head3" ] ; then
      sed -i.bak "s/{{HEAD3}}/$head3/" "$html" && rm "$html.bak"
    else
      sed -i.bak -E "s/<.+{{HEAD3}}.+>//" "$html" && rm "$html.bak"
    fi
  fi
done