#!/usr/bin/env bash # This file is responsible for generating an html structure of documents # All md files will be converted to html # Everything else will be copied exactly # The table of contents will be a nested ul structure # The top level will be the tags, under each tag there will be a list of documents that are tagged with that tag # This will result in doucuments being listed multiple times, once for each tag they are in generate-html-toc(){ echo "" } to-html(){ local destination="$1" local preTemplate="/usr/local/share/kb/templates/main.html" local tocFile="$(mktemp)" local templateFile="$(mktemp)" generate-html-toc > "$tocFile" # If there is a template in the users .local/share directory, use that [ -e "${XDG_CONFIG_HOME:-$HOME/.config}/kb/templates/main.html" ] && preTemplate="${XDG_CONFIG_HOME:-$HOME/.config}/kb/templates/main.html" # If there is a template in the data directory, use that [ -e "${dataDir}templates/main.html" ] && preTemplate="${dataDir}templates/main.html" sed "s#\#TOC\##\${ $tocFile() }#" "$preTemplate" > "$templateFile" find "$dataDir" -name "*.md" | while read file; do local newFile="${file##*/}" newFile="${newFile/.md/.html}" sed -E 's/\.md( *)\)/.html\1\)/' "$file" | pandoc -f markdown -t html --template "$templateFile" > "$destination/$newFile" done rsync -a \ --exclude "*.md" --exclude "*.sqlite3" \ "$dataDir/" "$destination" rm "$tocFile" "$templateFile" }