diff --git a/generate-blog.bash b/generate-blog.bash index 9e42a30..5786fb4 100755 --- a/generate-blog.bash +++ b/generate-blog.bash @@ -24,6 +24,21 @@ if ! [[ -f "$posts_file" ]]; then exit 1 fi +link-back-from-root() { + declare root="$1" directory="$2" + + directory="${directory#$root}" + directory="${directory%/}" + + declare link='' + while read -rd '/' slug; do + link="${link}../" + done <<<"$directory" + + echo "$link" +} + + escape-html() { sed 's/&/\&/g; s//\>/g; s/"/\"/g; s/'"'"'/\'/g' } @@ -72,7 +87,7 @@ rfc-822-date-time() { } print-post-html-top() { - declare title="$1" + declare title="$1" root="$2" directory="$3" cat < @@ -84,7 +99,7 @@ print-post-html-top() {
- Blog + Blog | RSS Feed
@@ -151,7 +166,7 @@ el-enclose() { } publish-html() { - declare source_dir="$1" publish_dir="$2" contents="$3" + declare root="$1" source_dir="$2" publish_dir="$3" contents="$4" declare pubdate_file="$source_dir/publish_date.txt" \ checksum_file="$source_dir/last_checksum.txt" \ @@ -197,7 +212,7 @@ publish-html() { printf 'Publishing to %s\n' "$index_file" >&2 mkdir -p "$publish_dir" || return $? - print-post-html-top "$title" > "$index_file" + print-post-html-top "$title" "$root" "$publish_dir" > "$index_file" printf '%s\n' "$contents" >> "$index_file" print-post-html-bottom "$pubdate" "$last_edit_date" >> "$index_file" fi @@ -240,7 +255,7 @@ while read -r post_html_path; do post_publish_dir="$publish_dir/posts/$(basename "$post_dir")" || exit $? read -rd '' post_html < "$post_html_path" || true - publish-html "$post_dir" "$post_publish_dir" "$post_html" + publish-html "$publish_dir" "$post_dir" "$post_publish_dir" "$post_html" || exit $? { el div