site

Francesco Saccone's site content.
git clone https://git.francescosaccone.com/site
Log | Files | Refs | README | LICENSE

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"