generate-sitemap.sh (1009B)
1 #!/bin/sh 2 3 for program in dirname echo find mkdir realpath; do 4 if ! command -v "$program" > /dev/null 2>&1; then 5 echo "Error: Required program '$program' is not installed." 6 exit 1 7 fi 8 done 9 10 if [ "$#" -ne 2 ]; then 11 echo "Usage: $0 <destination> <base-url>" 12 exit 1 13 fi 14 15 SOURCE="$(realpath $(dirname $0)/..)" 16 DESTINATION="$1" 17 SITEMAP_FILE="$DESTINATION/sitemap.xml" 18 BASE_URL="$2" 19 20 mkdir -p "$DESTINATION" 21 22 { 23 echo -n '<?xml version="1.0" encoding="UTF-8"?>' 24 echo -n '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap-image/1.1">' 25 } > "$SITEMAP_FILE" 26 27 for md_file in $(find "$SOURCE" -type f -name "index.md"); do 28 md_relative_file="${md_file#$SOURCE/}" 29 30 if [ "$md_relative_file" = "index.md" ]; then 31 url_path="" 32 else 33 url_path="$(dirname $md_relative_file)/" 34 fi 35 36 url="$BASE_URL/$url_path" 37 38 { 39 echo -n "<url>" 40 echo -n "<loc>$url</loc>" 41 echo -n "</url>" 42 } >> "$SITEMAP_FILE" 43 done 44 45 echo -n "</urlset>" >> "$SITEMAP_FILE" 46 47 echo "Sitemap generated: $SITEMAP_FILE"