commit dfad1480155f9e2e14cbb5ffbb3ed3c2938127a9 parent 9fdd3b15dd08229ad37bda887e416d6690e15b03 Author: Francesco Saccone <francesco@francescosaccone.com> Date: Sun, 9 Mar 2025 12:27:21 +0100 feat: add script for gemini sitemap.xml generation Signed-off-by: Francesco Saccone <francesco@francescosaccone.com> Diffstat:
A | generate-gemini-sitemap.sh | | | 44 | ++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 44 insertions(+), 0 deletions(-)
diff --git a/generate-gemini-sitemap.sh b/generate-gemini-sitemap.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +for program in date echo find mkdir; do + if ! command -v "$program" > /dev/null 2>&1; then + echo "Error: Required program '$program' is not installed." + exit 1 + fi +done + +if [ "$#" -ne 2 ]; then + echo "Usage: $0 <destination> <base-url>" + exit 1 +fi + +SOURCE="$(dirname "$0")" +DESTINATION="$1" +SITEMAP_FILE="$DESTINATION/sitemap.xml" +BASE_URL="$2" + +mkdir -p "$DESTINATION" + +{ + echo -n '<?xml version="1.0" encoding="UTF-8"?>' + echo -n '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap-image/1.1">' +} > "$SITEMAP_FILE" + +for md_file in $(find "$SOURCE" -type f -name "*.md"); do + relative_path="${md_file#$SOURCE/}" + gemini_relative_path="${relative_path%.md}.gmi" + + url="$BASE_URL/$gemini_relative_path" + last_modified=$(date -r "$md_file" +"%Y-%m-%d") + + { + echo -n "<url>" + echo -n "<loc>$url</loc>" + echo -n "<lastmod>$last_modified</lastmod>" + echo -n "</url>" + } >> "$SITEMAP_FILE" +done + +echo -n "</urlset>" >> "$SITEMAP_FILE" + +echo "Sitemap generated: $SITEMAP_FILE"