Artifact c21444f7c98a16e2e837b0cd19f26e396dd822c04f7a98d07baf871d1d091685:


#! /usr/bin/env tclsh

package require Tcl 8.6

package require http


proc page-url {base-url name} {
    return ${base-url}[string map {%20 +} [http::quoteString $name]]
}


proc sitemap urls {
    set doc [list \
        {<?xml version="1.0" encoding="UTF-8"?>} \
        {<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">} \
    ]

    foreach url $urls {
        lappend doc <url><loc><!\[CDATA\[$url]]></loc></url>
    }

    lappend doc </urlset>

    return [join $doc \n]
}


proc skip? {name content} {
    expr {
        [regexp ^special: $name]
        || [regexp {^\s*$} $content]
        || [regexp {^Go to \[.*\]\(.*\)} $content]
    }
}


proc generate {base-url args} {
    set pages [split [exec fossil wiki ls] \n]

    set urls [lmap page $pages {
        if {[skip? $page [exec fossil wiki export $page]]} continue
        page-url ${base-url} $page
    }]

    lappend urls {*}$args

    puts [sitemap $urls]
}


generate {*}$argv