summaryrefslogtreecommitdiff
path: root/plain.sh
diff options
context:
space:
mode:
Diffstat (limited to 'plain.sh')
-rwxr-xr-xplain.sh42
1 files changed, 42 insertions, 0 deletions
diff --git a/plain.sh b/plain.sh
new file mode 100755
index 0000000..23eb200
--- /dev/null
+++ b/plain.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+set -e
+
+# usage: ./plain.sh <input txt> <output html>
+
+
+# i/o variables
+
+IN="$1"
+OUT="$2"
+
+[ -f $IN ] || { echo "---- [FATAL] $IN not found ----" ; exit 1 ; }
+
+
+# initial write
+
+cat plain-header > $2
+cat $1 >> $2
+printf "</pre>\n</body>\n</html>" >> $2
+echo '[ok] initial assembly'
+
+# hack to fix double <pre> when generating from nav.sh
+
+sed -e "/^<pre>$/ {n;/^<pre>$/d}" -e "/^<\/pre>$/ {n;/^<\/pre>$/d}" -i'' $2
+
+
+# metadata
+
+sedesc() {
+ sed -e 's;\&;\\\&;' -e 's/;/\\\;/' -e 's;-->;;'
+}
+
+TITLE=$(grep -e '^<!--title: ' -m 1 $1 | cut -f 2- -d ' ' | sedesc)
+sed -e "/^<!--title:/d" -e "s;<title>#;<title>${TITLE};1" -i'' $2
+printf '[ok] title: %s\n' "$TITLE"
+
+MDATE=$(stat -c '%y' $1 | sed -e 's/\.[0-9]* //' -e 's/\(..\)\(..\)$/\1:\2/') # ISO 8601 format: "yyyy-mm-dd hh:mm:ss±zz:zz"
+sed "/^<\/head>/i <meta http-equiv=\"last-modified\" content=\"${MDATE}\" />" -i'' $2
+printf '[ok] date: %s\n' "$MDATE"
+
+
+echo "---- build complete: $2 ----"