diff --git a/kewt.sh b/kewt.sh index 6c8f4b1..0744005 100755 --- a/kewt.sh +++ b/kewt.sh @@ -50,6 +50,7 @@ generate_page_title = true error_page = "not_found.html" versioning = false enable_header_links = true +base_url = "" EOF fi @@ -284,6 +285,7 @@ generate_page_title="true" error_page="not_found.html" versioning="false" enable_header_links="true" +base_url="" load_config() { [ -f "$1" ] || return @@ -325,6 +327,7 @@ load_config() { error_page) error_page="$val" ;; versioning) versioning="$val" ;; enable_header_links) enable_header_links="$val" ;; + base_url) base_url="$val" ;; esac done < "$1" } @@ -603,4 +606,27 @@ if [ -n "$error_page" ] && [ ! -f "$out/$error_page" ]; then rm -f "$temp_404" fi +if [ -n "$base_url" ]; then + sitemap_file="$out/sitemap.xml" + base_url="${base_url%/}" + today=$(date +%Y-%m-%d) + + printf '\n' > "$sitemap_file" + printf '\n' >> "$sitemap_file" + + find "$out" -type f -name "*.html" -print | sort | while IFS= read -r html_file; do + rel_url="${html_file#"$out"}" + + # Don't include 404 in the sitemap (duh) + [ "${rel_url#/}" = "$error_page" ] && continue + + printf ' \n' >> "$sitemap_file" + printf ' %s%s\n' "$base_url" "$rel_url" >> "$sitemap_file" + printf ' %s\n' "$today" >> "$sitemap_file" + printf ' \n' >> "$sitemap_file" + done + + printf '\n' >> "$sitemap_file" +fi + echo "Build complete."