#!/bin/sh set -eu content_dir=${1:-content} public_dir=${2:-public} [ -d "$content_dir" ] || exit 0 mkdir -p "$public_dir" find "$content_dir" -type f -print | while IFS= read -r source do relative=${source#"$content_dir"/} case "$relative" in updates/_index.md) # Updates is an aggregate index, not a published Markdown document. continue ;; journal/_index.md) target=$public_dir/journal/_index.md ;; journal/*/_index.md|journal/*/*/_index.md) target=$public_dir/$relative ;; journal/*/*/*/*) target=$public_dir/$relative ;; journal/*) # Only source files for published journal sections and entries are public. continue ;; *) target=$public_dir/$relative ;; esac mkdir -p "$(dirname "$target")" cp "$source" "$target" done