From 8dd5bde52a8006ad4eeecf8b70298d09b0dba6a9 Mon Sep 17 00:00:00 2001 From: Q Date: Sun, 16 Jan 2022 09:59:27 +0200 Subject: [PATCH] static html builder --- README.md | 9 +++++ build_static.sh | 95 +++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 23 +++++++----- 3 files changed, 119 insertions(+), 8 deletions(-) create mode 100644 build_static.sh diff --git a/README.md b/README.md index 09e670a..ec81f46 100644 --- a/README.md +++ b/README.md @@ -34,3 +34,12 @@ Only 1st level heads and links are parsed. The rest are printed as is: [link name](link url) ``` + +## Static HTML builder + +Sometimes the reloading of styles and links is hard due to caching. +You can create a fully static single HTML page with: + +``` +bash build_static.sh -l example_links.txt -c config.js -s style.css > templated.html +``` diff --git a/build_static.sh b/build_static.sh new file mode 100644 index 0000000..d613951 --- /dev/null +++ b/build_static.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +_help() { + echo "Pass arguments to create a static version of the index, printed on stdout + Templating will replace config values config.style and config.source to null + + -l [links.txt] Path to links.txt. must be passed + -c [config.js] *Path to configuration js replacing config values + -s [styles.css] *Path to extra styles + + * can be left out + " + exit +} + +_checkenv() { + if [[ ! -e "$LINKS" ]]; then + echo "Links file '$LINKS' not found." + _help + exit 1 + fi + if [[ -n "$CONFIG" ]]; then + if [[ ! -e "$CONFIG" ]]; then + echo "Config file '$CONFIG' not found." + exit 1 + fi + fi + if [[ -n "$STYLE" ]]; then + if [[ ! -e "$STYLE" ]]; then + echo "Styles file '$STYLE' not found." + exit 1 + fi + fi + + echo " + Links file: $LINKS + Config file: $CONFIG + Style file: $STYLE + " >&2 + +} +_replace_links() { + if [[ -e "$LINKS" ]]; then + sed \ + -e '/TEMPLATED:LINKS/a config.source=null;' \ + -e '/TEMPLATED:LINKS/a config.links=`' \ + -e "/TEMPLATED:LINKS/r $LINKS" \ + -e '/TEMPLATED:LINKS/a `;' + #-e "/TEMPLATED:LINKS/d" + else + cat - + fi +} +_replace_config() { + if [[ -e "$CONFIG" ]]; then + sed \ + -e "/TEMPLATED:CONFIG/r $CONFIG" \ + -e "/^.script language.*config.js.*script.*/d" + #-e "/TEMPLATED:CONFIG/d" + else + cat - + fi +} +_replace_style() { + if [[ -e "$STYLE" ]]; then + sed \ + -e "/TEMPLATED:STYLE/r $STYLE" \ + -e '/TEMPLATED:CONFIG/a config.style=null;' \ + #-e "/TEMPLATED:STYLE/d" + else + cat - + fi +} + +_replace() { + + cat index.html | _replace_links | _replace_config | _replace_style + +} + +CONFIG= +STYLE= +LINKS= + +for (( i=1; i<=$#; i++ )); do + j=$(( i + 1 )) + [[ "${!i}" = "-h" ]] && _help + [[ "${!i}" = "--help" ]] && _help + [[ "${!i}" = "-l" ]] && { LINKS="${!j}"; shift 1; continue; } + [[ "${!i}" = "-c" ]] && { CONFIG="${!j}"; shift 1; continue; } + [[ "${!i}" = "-s" ]] && { STYLE="${!j}"; shift 1; continue; } +done + +_checkenv +_replace diff --git a/index.html b/index.html index 0f11b3b..e71a912 100644 --- a/index.html +++ b/index.html @@ -48,13 +48,14 @@ } .blink { -webkit-animation: blinker 0.5s infinite; - -moz-animation: blinker 0.5s infinite; - animation: blinker 0.5s infinite; + -moz-animation: blinker 0.5s infinite; + animation: blinker 0.5s infinite; } @keyframes blinker { 0% { opacity: 0.00; } 100% { opacity: 1.00; } } + /* TEMPLATED:STYLE */