#!/usr/bin/env bash [[ "$1" == "--help" ]] && echo "USAGE: $0 [NOTES_DIRECTORY_1 [NOTES_DIRECTORY_2 [...]]]" && exit 0 # set default config values, load user config, export config variables name="" article_template="/opt/notes2web/templates/article.html" textarticlehead_template="/opt/notes2web/templates/textarticlehead.html" textarticlefoot_template="/opt/notes2web/templates/textarticlefoot.html" listitem_template="/opt/notes2web/templates/listitem.html" index_template="/opt/notes2web/templates/index.html" stylesheet="/opt/notes2web/styles.css" for configpath in "$HOME/.notes2web.conf" "$HOME/.config/notes2web/config" ".notes2web.conf" do [[ -f "$configpath" ]] && source "$configpath" done export name export article_template export textarticlehead_template export textarticlefoot_template export listitem_template export index_template export stylesheet function _renderarticle { echo "rendering $1" pandoc\ --toc\ --standalone\ -t html\ --template "$article_template"\ -o "${1}.html"\ "$1"\ --mathjax } function _rendertextarticle { [[ "$(file -b "$1")" == "ASCII text" ]] || exit echo "rendering text file $1" sed -e "s#\\\$title\\\$#$1#" "$textarticlehead_template"\ > "${1}.html" cat "$1" >> "${1}.html" cat "$textarticlefoot_template" >> "${1}.html" } function _adddirtoindex { dir="$(dirname "$1")" echo "

$(basename "$dir") notes

" >> index.md find "$dir" -name '*.md' -exec bash -c "_addarticletoindex '{}'" \; find "$dir" -not -path '**/.git/**' -not -name '*.md' -type f -exec bash -c "_addtextarticletoindex '{}'" \; } function _addtextarticletoindex { [[ "$(file -b "$1")" == "ASCII text" ]] || exit pandoc\ -t html\ -V "filepath=${1}.html"\ -V "title=$1"\ --template "$listitem_template"\ "$1"\ >> index.md } function _addarticletoindex { echo "adding $1 to list of notes" pandoc\ -t html\ -V "filepath=${1}.html"\ --template "$listitem_template"\ "$1"\ >> index.md } export -f _renderarticle export -f _rendertextarticle export -f _adddirtoindex export -f _addarticletoindex export -f _addtextarticletoindex #render each markdown file in every folder passed in args for dir in "$@" do find "$dir" -name '*.md' -exec bash -c "_renderarticle '{}'" \; find "$dir" -not -path '**/.git/**' -not -name '*.md' -type f -exec bash -c "_rendertextarticle '{}'" \; done # create an intermediate markdown file of links to each article echo "---" > index.md [[ -z "$name" ]] && echo "title: notes" >> index.md || echo "title: ${name}'s notes" >> index.md echo "---" >> index.md # mark folders to be included in notes2web's index for file in "$@" do [[ ! -f "$file" ]] && echo "the presence of this files tells notes2web that it should be added to the notes2web index" > "$file/.2web" done # add articles to index and render find -name '.2web' -exec bash -c "_adddirtoindex '{}'" \; echo "copying styles.css to current directory" cp "$stylesheet" ./styles.css echo "rendering index.md" pandoc\ -t html\ --template "$index_template"\ -o index.html\ "index.md"