#!/bin/sh basedir="$(pwd)" if [ "$(uname)" = "Linux" ]; then date_last_modified_cmd="stat -c %Y" else date_last_modified_cmd="stat -f %m" fi age_top="$($date_last_modified_cmd top.html)" age_top_nobar="$($date_last_modified_cmd top-nobar.html)" age_bottom="$($date_last_modified_cmd bottom.html)" recursivebuild() { local destdir=$(echo "$1" | sed 's|^src|http|') mkdir -p "$destdir" for file in "$1"/*; do if [ -d "$file" ]; then mkdir -p "$destdir/$(basename "$file")" recursivebuild "$file" else copyfile "$file" "$destdir" fi done } # This function is currently useless, but we keep it in case we need to # preprocess some m4 files. mdpreprocess() { file="$1" if [ "$(echo "$file" | sed 's/.*\.//')" = "m4" ]; then printf 'm4_include(macros.m4)m4_dnl\n%s\n' "$(cat "$file")" | \ m4 -P -I "$basedir/utils" else cat "$file" fi } copyfile() { file=$1 dest=$2 ind=$dest/index.html extension=$(echo "$file" | sed 's/.*\.//') age_src="$($date_last_modified_cmd "$file")" case "$extension" in # m4 preprocess is currently disabled #m4) # noext=$(echo "$file" | sed 's/\..*//') # mdpreprocess "$file" > $noext.md # ;; md) if [ \( -f "$ind" \) ]; then age_dst="$($date_last_modified_cmd "$ind")" if [ \( "$age_dst" -ge "$age_src" \) -a \ \( "$age_dst" -ge "$age_top" \) -a \ \( "$age_dst" -ge "$age_bottom" \) ]; then echo "Skipping "$file" -> "$ind"" return fi fi echo "Building "$file" -> "$ind"" t="$(markdowntitle "$file")" sed "s/TITLE/$t/" < top.html > "$ind" mdpreprocess "$file" | \ lowdown --html-no-skiphtml --html-no-escapehtml \ >> "$ind" cat bottom.html >> "$ind" ;; noheadermd) if [ \( -f "$ind" \) ]; then age_dst="$($date_last_modified_cmd "$ind")" if [ \( "$age_dst" -ge "$age_src" \) -a \ \( "$age_dst" -ge "$age_top_nobar" \) -a \ \( "$age_dst" -ge "$age_bottom" \) ]; then echo "Skipping "$file" -> "$ind"" return fi fi echo "Building "$file" -> "$ind"" t="$(markdowntitle "$file")" sed "s/TITLE/$t/" < top-nobar.html > "$ind" mdpreprocess "$file" | \ lowdown --html-no-skiphtml --html-no-escapehtml \ >> "$ind" ;; html) if [ \( -f "$ind" \) ]; then age_dst="$($date_last_modified_cmd "$ind")" if [ \( "$age_dst" -ge "$age_src" \) -a \ \( "$age_dst" -ge "$age_top" \) -a \ \( "$age_dst" -ge "$age_bottom" \) ]; then echo "Skipping "$file" -> "$ind"" return fi fi echo "Copying "$file" -> "$ind"" t="$(htmltitle "$file")" cat top.html "$file" bottom.html | sed "s/TITLE/$t/" > "$ind" ;; raw) namenoraw="$(basename "$file" | sed 's/\.raw$//')" if [ \( -f "$dest/$namenoraw" \) ]; then age_dst="$($date_last_modified_cmd "$dest/$namenoraw")" if [ "$age_dst" -ge "$age_src" ]; then echo "Skipping "$file" -> "$dest/$namenoraw"" return fi fi echo "Copying "$file" -> "$dest/$namenoraw"" cp "$file" "$dest/$namenoraw" ;; *) dest_name="$(basename "$file")" if [ \( -f "$dest/$dest_name" \) ]; then age_dst="$($date_last_modified_cmd "$dest/$dest_name")" if [ "$age_dst" -ge "$age_src" ]; then echo "Skipping "$file" -> "$dest/$dest_name"" return fi fi echo "Copying "$file" -> "$dest/$dest_name"" cp "$file" "$dest/$dest_name" esac } markdowntitle() { grep '^# ' "$1" | head -n 1 | sed 's/^# //' } htmltitle() { grep '$//' } makeblogindexandfeed() { mkdir -p http/blog bf=http/blog/index.html ff=http/blog/feed.xml sed "s/TITLE/Blog/" < top.html > "$bf" { echo '
$thisyear | |
| $d | "; echo "$t |