my-homelab-configs/apps/website/render-static-pages.sh

41 lines
1.2 KiB
Bash

#!/bin/sh
set -eu
root="${1:-/var/www/localhost/htdocs}"
render_page() {
lang="$1"
source="$2"
output="$3"
request_uri="$4"
mkdir -p "$(dirname "$output")"
echo "Rendering ${source} (${lang}) -> ${output}" >&2
# shellcheck disable=SC2016
if php -d display_errors=stderr -d log_errors=0 -r '
parse_str($argv[1], $_GET);
$_SERVER["HTTP_ACCEPT_LANGUAGE"] = $argv[2];
$_SERVER["REQUEST_METHOD"] = "GET";
$_SERVER["REQUEST_URI"] = $argv[3];
$_SERVER["PHP_SELF"] = "/" . $argv[4];
chdir($argv[5]);
include $argv[5] . "/" . $argv[4];
' "lang=$lang" "$lang" "$request_uri" "$source" "$root" > "$output"; then
return 0
fi
status=$?
echo "Failed rendering ${source} (${lang}) with exit status ${status}" >&2
rm -f "$output"
return "$status"
}
for lang in en nah; do
static_dir="$root/static-pages/$lang"
render_page "$lang" index.php "$static_dir/index.html" "/?lang=$lang"
render_page "$lang" cv.php "$static_dir/cv.html" "/cv.php?lang=$lang"
render_page "$lang" blog.php "$static_dir/blog.html" "/blog.php?lang=$lang"
render_page "$lang" demos.php "$static_dir/demos.html" "/demos.php?lang=$lang"
render_page "$lang" homelab-tree.php "$static_dir/homelab-tree.html" "/homelab-tree.php?lang=$lang"
done