#!/bin/bash target_filename () { if [ "${1#*.}" = "md" ]; then echo "output/$(echo "${1%.md}.html" | cut -sd / -f 2-)" else echo "output/$(echo "$1" | cut -sd / -f 2-)" fi } get_subpages_basedir() { filename=$(basename "$1") if [ "$filename" = "index.md" ]; then dirname "$1" else echo "${1%.md}" fi } get_subpages() { basedir=$(get_subpages_basedir "$1") child_pages=() if [ -d "$basedir" ]; then mapfile -d $'\0' child_pages_1 < <(find $basedir/ \ -type f \ -name "*.md" ! -name "index.md" \ -maxdepth 1 \ -print0) mapfile -d $'\0' child_pages_2 < <(find $basedir/ \ -type f \ -name "index.md" \ -mindepth 2 \ -maxdepth 2 \ -print0) child_pages=("${child_pages_1[@]}" "${child_pages_2[@]}") fi if [ ${#child_pages[@]} -ne 0 ]; then echo -e "\033[0;90m[////////]\033[0m Child pages:" for file in "${child_pages[@]}"; do echo -e "\033[0;90m[////////]\033[0m - $file" done fi } handle () { target=$(target_filename "$1") mkdir -p $(dirname "$target") if [ "${1#*.}" = "md" ]; then echo -e "\033[0;32m[COMPILE ]\033[0m $1 -> $target" subpages_meta=$(mktemp) # $(get_subpages "$1") > "$subpages_meta" get_subpages "$1" pandoc "$1" \ -f markdown \ -t html5 \ --template templates/base.html \ -o "$target" \ --metadata-file metadata/metadata.yaml \ --metadata-file "$subpages_meta" rm "$subpages_meta" else echo -e "\033[0;32m[COPY ]\033[0m $1 -> $target" cp "$1" "$target" fi } if [ -z "$1" ]; then find content/ \ -type f \ | while read file do handle "$file" done elif [ "$1" = "all_md" ]; then find content/ \ -type f \ -name "*.md" \ | while read file do handle "$file" done elif [ "$1" = "single" ]; then if [ -z "$2" ]; then echo -e "\033[0;31m[ERROR ]\033[0m \"single\" operation requires file argument" else handle "$2" fi elif [ "$1" = "delete" ]; then if [ -z "$2" ]; then echo -e "\033[0;31m[ERROR ]\033[0m \"delete\" operation requires file argument" else TARGET=$(target_filename "$2") echo -e "\033[0;32m[DELETE ]\033[0m $2 -> $TARGET" rm -rf $TARGET fi else echo -e "\033[0;31m[ERROR ]\033[0m Unknown operation: \"$1\"" fi