From 4c5629df62c0a694b6ef3aada2ec86890bfeceaa Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sat, 12 Sep 2026 14:11:59 +0300 Subject: feat!: Rework website generation - Move src.du into src/INIT.du - Replace generate.sh with make.sh, which uses multiple stages for execution and allows customising them. - Added a stage for sitemap generation in make.sh --- make.sh | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100755 make.sh (limited to 'make.sh') diff --git a/make.sh b/make.sh new file mode 100755 index 0000000..2437873 --- /dev/null +++ b/make.sh @@ -0,0 +1,149 @@ +#!/bin/sh + +set -e -a + +: ${SRC:=$PWD/src} +: ${DST:=./website} +: ${URL:=https://syndamia.com} +: ${AWK:="mawk"} + +condition() { + if [ -z "$FORCE_GEN" ] \ + && [ -d "$DST" ] \ + && [ -f "$DST/.commit" ] \ + && command -v git >/dev/null 2>&1 \ + && [ -z "$(git status -s)" ] \ + && [ "$(cat "$DST"/.commit)" = "$(git rev-parse HEAD)" ] + then + echo "Output '$DST' is up to date with website source '$SRC'!" + exit 0 + fi +} + +patch() { + while read -r folder + do + if [ -f "$folder.du" ] && [ ! "$folder.du" -ef "$folder/index.du" ] + then + rm "$folder/index.du" >/dev/null 2>&1 + ln "$folder.du" "$folder/index.du" + fi + done << EOF +$(find "$SRC" -maxdepth 1 -type d) +EOF + + if [ ! "src/favicon.ico" -ef "src/img/favicon.ico" ] + then + rm "src/favicon.ico" >/dev/null 2>&1 + ln "src/img/favicon.ico" "src/favicon.ico" + fi +} + +prepare() { + mkdir -p "$DST" + rm -r "$DST"/* 2>/dev/null || true + cp -a "$SRC/." "$DST" + rm "$DST/INIT.du" +} + +build() { + OUTPUT_FORMAT=HTML "$AWK" \ + -f ./dunbar/dunbar_awk/dunbar.awk \ + ./dunbar/stdenv/sgml.du \ + -c "$SRC/INIT.du" \ + $(find "$DST" -type f -name '*.du') + + date '+%e.%m.%Y %H:%M:%S %Z' > "$DST"/.build + + if command -v git >/dev/null 2>&1 + then + git rev-parse HEAD > "$DST"/.commit + fi +} + +build_sitemap() { + cat <"$DST"/sitemap.xml + + +$("$AWK" -v date="$(date +%Y-%m-%d)" ' + { + URL = ENVIRON["URL"] substr($0, length(ENVIRON["DST"]) + 1) + print "" URL "" date "1.0" + } +' < +SITEMAP +} + +build_tiny() { + mkdir -p "$DST.tiny" + rm -r "$DST.tiny"/* 2>/dev/null || true + cp -a "$DST/." "$DST.tiny" + rm -rf "$DST.tiny"/*.css "$DST.tiny"/fonts/ + + sed -i \ + -e '/rel="stylesheet"/d' \ + -e '/