major update, put everything in 1 script - static-site-scripts - static site generator shellscripts
 (HTM) git clone git://git.codemadness.org/static-site-scripts
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 6774b61fbd2c346550101ab1e2c22b6aafadc69e
 (DIR) parent 7173e52a5358a4c681716f00945dabdb5ed95b83
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Fri, 28 Feb 2014 12:42:54 +0100
       
       major update, put everything in 1 script
       
       Signed-off-by: Hiltjo Posthuma <hiltjo@codemadness.org>
       
       Diffstat:
         M generate.sh                         |     316 ++++++++++++++++++++++---------
         A output/print.css                    |       9 +++++++++
         A output/style.css                    |      67 +++++++++++++++++++++++++++++++
         D site.conf                           |      28 ----------------------------
         D site/layout/atom/atom.sh            |      14 --------------
         D site/layout/atom/atomitem.sh        |      16 ----------------
         D site/layout/index/index.sh          |      52 -------------------------------
         D site/layout/index/indexitem.sh      |       3 ---
         D site/layout/page/page.sh            |      50 -------------------------------
         D site/layout/rss/rss.sh              |      14 --------------
         D site/layout/rss/rssitem.sh          |      12 ------------
         D site/output/print.css               |      12 ------------
         D site/output/style.css               |      69 ------------------------------
         D site/pages/example-page-template.h… |       1 -
         D site/pages/example-page-template.sh |      11 -----------
         D site/pages/markdown-test.md         |      61 -------------------------------
         D site/pages/markdown-test.sh         |      11 -----------
       
       17 files changed, 306 insertions(+), 440 deletions(-)
       ---
 (DIR) diff --git a/generate.sh b/generate.sh
       @@ -1,125 +1,269 @@
        #!/bin/sh
       +# site title (part of ${pagetitle} probably).
       +sitetitle="Codemadness"
       +# main site domain.
       +sitedomain="http://www.codemadness.nl"
       +# short site domain.
       +sitedomainshort="codemadness.nl"
       +# relative site url.
       +siteurlrel=""
       +# full site url.
       +siteurlfull="${sitedomain}${siteurlrel}"
       +# site keywords (default).
       +sitekeywords="blog, suckless, dwm-hiltjo"
       +# site description (default).
       +sitedescription="blog with various projects and articles about computer-related things"
       +# sitem mail used for contact "mail link".
       +sitemail="hiltjo@AT@codemadness.DOT.org"
       +# site author (global).
       +siteauthor="hiltjo"
       +# site last updated (default use date when script was run).
       +siteupdated=$(date "+%Y-%m-%dT%H:%M:%SZ")
        
       -# Syntax highlight code.
       -code_highlight() {
       -        printf '%s\n' '<pre><code>'
       -        # escape some HTML entities, prefix code with linenumbers.
       -        sed -e 's@&@\&amp;@g' -e 's@>@\&gt;@g' -e 's@<@\&lt;@g' | nl -w 4 -s ' '
       -        printf '%s\n' '</code></pre>'
       -}
       +# Directories containing content and metadata.
       +# NOTE: it's recommended to use absolute paths here.
       +pagesdir="pages"
       +# Output dir.
       +outputdir="output"
       +# Markdown processor: default: is "smu".
       +markdown="smu"
        
       -# page_metadata(filename)
       -page_metadata() {
       +# initial values for page variables.
       +#page_reset()
       +page_reset() {
                id=""
                tags=""
                title=""
                url=""
                description="${sitedescription}"
                keywords="${sitekeywords}"
       -        filename=""
                content=""
                categories=""
       -        timestamp=""
       -        [ ! "$1" = "" ] && [ -f "$1" ] && . "$1" # include page metadata.
       +        timecreated=""
       +        datecreated=""
       +        timeupdated=""
       +        dateupdated=""
       +        author="${siteauthor}"
        }
        
       -# load config (evaluate shellscript).
       -# loadconfig(configfile)
       -loadconfig() {
       -        # allow to specify config via argv[1].
       -        if [ ! "$1" = "" ]; then
       -                # get absolute path of config file.
       -                config=$(readlink -f "$1")
       -        else
       -                # default config location.
       -                config="./site.conf"
       -        fi
       -        # load config: config is loaded here to be able to override above variables
       -        # (sfeedpath, sfeedfile, etc).
       -        if [ -r "${config}" ]; then
       -                . "${config}"
       +#makeid(title)
       +makeid() {
       +        printf '%s\n' "$1" | tr '[:upper:]' '[:lower:]' | sed -e 's@[^a-zA-Z0-9]\+@-@g' \
       +                -e 's@[-]*$@@g' -e 's@^[-]*@@g'
       +}
       +
       +# escape some HTML entities, prefix code with linenumbers.
       +code_highlight() {
       +        printf '%s' '<pre><code>'
       +        sed -e 's@&@\&amp;@g' -e 's@>@\&gt;@g' -e 's@<@\&lt;@g' | nl -w 4 -s ' '
       +        printf '%s' '</code></pre>'
       +}
       +
       +pageheader() {
       +        # prefix page title with site title, make sure its neatly formatted.
       +        if [ "${title}" = "" ]; then
       +                pagetitle="${sitetitle}"
                else
       -                echo "$0 [configfile]" >&2
       -                echo "" >&2
       -                echo "Error: configuration file \"${config}\" does not exist or is not readable." >&2
       -                exit 1
       +                pagetitle="${title} - ${sitetitle}"
                fi
       +        cat <<!__EOF__
       +<!DOCTYPE HTML>
       +<html dir="ltr" lang="en">
       +        <head>
       +                <title>${pagetitle}</title>
       +                <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
       +                <link rel="stylesheet" href="print.css" type="text/css" media="print" />
       +                <link rel="alternate" type="application/rss+xml" title="${sitetitle} RSS Feed" href="rss.xml" />
       +                <link rel="alternate" type="application/atom+xml" title="${sitetitle} Atom Feed" href="atom.xml" />
       +                <link rel="icon" type="image/png" href="/favicon.png" />
       +                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
       +                <meta http-equiv="Content-Language" content="en" />
       +                <meta content="width=device-width" name="viewport" />
       +                <meta content="${keywords}" name="keywords" />
       +                <meta content="${description}" name="description" />
       +        </head>
       +        <body>
       +                <div id="menuwrap">
       +                        <div id="menu">
       +                                <span id="links">
       +                                        <a href="${siteurlrel}/index.html" title="Blog">Blog</a> |
       +                                        <a href="/downloads/projects/" title="Software I've written">Software</a> |
       +                                        <a href="https://github.com/hiltjo/" title="Some of my projects on github">Github</a>
       +                                </span>
       +                                <span id="links-contact">
       +                                        <span class="hidden"> | </span>
       +                                        <a href="rss.xml" title="Syndicate this site using RSS 2.0" class="rss">RSS</a> |
       +                                        <a href="atom.xml" title="Atom feed" class="atom">Atom</a> |
       +                                        <a href="mailto:${sitemail}" title="Mail me" class="mail">Mail</a>
       +                                </span>
       +                        </div>
       +                </div>
       +                <hr class="hidden" />
       +                <div id="mainwrap">
       +                        <div id="main">
       +!__EOF__
        }
        
       -# Default config options.
       -markdown="smu" # default markdown processor.
       -
       -# Read config file.
       -loadconfig "$1"
       -config="$1"
       +pagefooter() {
       +        cat <<!__EOF__
       +                        </div>
       +                </div>
       +        </body>
       +</html>
       +!__EOF__
       +}
        
        if [ ! -d "${pagesdir}" ]; then
                echo "Error: pages directory \"${pagesdir}\" not found." >&2
                exit 1
        fi
        
       -# Try to make output dir.
       +# try to make output dir.
        mkdir -p "${outputdir}"
        
       -# process pages.
       -# truncate pages where content is appended.
       -for name in "rss.xml" "atom.xml" "index.html"; do
       -        echo > "${outputdir}/${name}"
       -done
       -find "${pagesdir}" -type f -name "*.sh" | while read -r page; do
       -        page_metadata "${page}" # load page metadata.
       -        printf "%s\t%s\n" "${timestamp}" "${page}"
       -done | sort -rn | while read -r ts meta; do # process in order of time descending.
       -        pagename=$(basename "${meta}" ".sh")
       -        page_metadata "${meta}"
       +> "${outputdir}/urllist.txt" # truncate urllist.txt
       +contentindex=""
       +contentrss=""
       +contentatom=""
       +contentsitemap=""
       +while read -r meta; do
       +        page_reset
       +        basename=$(basename "${meta}" ".sh")
       +
       +        . "$meta" # source page metadata.
       +        datecreated=$(printf '%s' "${timecreated}" | cut -b 1-10)
       +        dateupdated=$(printf '%s' "${timeupdated}" | cut -b 1-10)
       +
       +        # set unset variables.
       +        if [ "${id}" = "" ] && [ ! "${title}" = "" ]; then
       +                id=$(makeid "${title}")
       +        fi
       +        if [ "${url}" = "" ]; then
       +                url="${id}.html"
       +        fi
                urlfull="${siteurlfull}/${url}"
                filename=""
       -        if [ "${content}" = "" ]; then # content not set: try data from file.
       -                if [ -f "${pagesdir}/${pagename}.html" ]; then
       -                        filename="${pagesdir}/${pagename}.html"
       +        # content not set; try data from filetypes.
       +        if [ "${content}" = "" ]; then
       +                if [ -f "${pagesdir}/${basename}.html" ]; then
       +                        filename="${pagesdir}/${basename}.html"
                                content=$(cat "${filename}")
       -                elif [ -f "${pagesdir}/${pagename}.md" ]; then
       -                        filename="${pagesdir}/${pagename}.md"
       +                elif [ -f "${pagesdir}/${basename}.md" ]; then
       +                        filename="${pagesdir}/${basename}.md"
                                content=$("${markdown}" "${filename}")
       +#                elif [ -f "${pagesdir}/${basename}.txt" ]; then
       +#                        filename="${pagesdir}/${basename}.txt"
       +#                        content=$(cat "${filename}")
       +#                        content="<pre>${content}</pre>"
                        fi
                fi
       -        . "${layoutdir}/page/page.sh" > "${outputdir}/${pagename}.html"
       -        . "${layoutdir}/index/indexitem.sh" >> "${outputdir}/index.html"
       -        . "${layoutdir}/rss/rssitem.sh" >> "${outputdir}/rss.xml"
       -        . "${layoutdir}/atom/atomitem.sh" >> "${outputdir}/atom.xml"
       -done
       -
       -# Index page.
       -page_metadata ""
       -title="Posts"
       -content=$(cat "${outputdir}/index.html")
       -. "${layoutdir}/index/index.sh" > "${outputdir}/index.html"
       +        # page
       +        if [ "${datecreated}" = "${dateupdated}" ]; then
       +                created="<strong>Created on:</strong> ${dateupdated}<br/>"
       +        else
       +                created="<strong>Created on:</strong> ${datecreated}<br/>
       +                         <strong>Last update on:</strong> ${dateupdated}<br/>"
       +        fi
       +        (pageheader
       +        cat <<!__EOF__
       +                <h1><a href="${siteurlrel}/${url}" title="${title}">${title}</a></h1>
       +                <em>${created}</em>
       +                ${content}
       +!__EOF__
       +        pagefooter) > "${outputdir}/${url}"
        
       -# RSS
       -page_metadata ""
       -content=$(cat "${outputdir}/rss.xml")
       -. "${layoutdir}/rss/rss.sh" > "${outputdir}/rss.xml"
       +        # index: append item on index page.
       +        contentindex="${contentindex}<tr><td class=\"lm\">${dateupdated}</td>
       +                     <td><a href=\"${url}\" title=\"${description}\">${title}</a></td></tr>"
        
       -# Atom
       -page_metadata ""
       -content=$(cat "${outputdir}/atom.xml")
       -. "${layoutdir}/atom/atom.sh" > "${outputdir}/atom.xml"
       +        # RSS item: append
       +        contentrsspubdate=$(date "+%a, %d %b %Y %H:%M:%S GMT" -d "${timeupdated}")
       +        contentrss="${contentrss}$(
       +        cat <<!__EOF__
       +        <item>
       +                <title>${title}</title>
       +                <link>${urlfull}</link>
       +                <pubDate>${contentrsspubdate}</pubDate>
       +                <author>${author}</author>
       +                <guid isPermaLink=\"false\">${urlfull}</guid>
       +                <description><![CDATA[${description}]]></description>
       +        </item>
       +!__EOF__
       +)"
       +
       +        # Atom item: append
       +        contentatomupdated=$(date "+%Y-%m-%dT%H:%M:%SZ" -d "${timeupdated}")
       +        contentatompublished=$(date "+%Y-%m-%dT%H:%M:%SZ" -d "${timecreated}")
       +        contentatom="${contentatom}$(
       +        cat <<!__EOF__
       +        <entry>
       +                <title type=\"html\"><![CDATA[${title}]]></title>
       +                <link rel=\"alternate\" type=\"text/html\" href=\"${urlfull}\" />
       +                <id>${urlfull}</id>
       +                <updated>${contentatomupdated}</updated>
       +                <published>${contentatompublished}</published>
       +                <author>
       +                        <name>${author}</name>
       +                        <uri>${siteurlfull}</uri>
       +                </author>
       +                <summary type=\"html\"><![CDATA[${description}]]></summary>
       +        </entry>
       +!__EOF__
       +)"
        
       -# Goto output dir to make relative urls for find.
       -cd "${outputdir}"
       +        # sitemap: sitemap.xml, append item.
       +        contentsitemap="${contentsitemap}<url><loc>${urlfull}</loc></url>"
        
       -# Sitemap: urllist.txt
       -find ./ -type f -name "*.html" | sort | sed 's@^\./@'${siteurlfull}'/@' > "urllist.txt"
       +        # sitemap: urllist.txt, just write directly.
       +        printf '%s\n' "${urlfull}" >> "${outputdir}/urllist.txt"
       +done <<!FILELIST
       +$(find "${pagesdir}" -type f -name "*.sh" | sort -rn)
       +!FILELIST
       +# process pages (reverse numeric order).
       +# above heredoc is used to make sure content* variables are known
       +# in this scope after the while loop.
       +
       +# index page.
       +page_reset
       +title="Posts"
       +(pageheader
       +cat <<!__EOF__
       +        <h1>${title}</h1>
       +        <table>
       +                ${contentindex}
       +        </table>
       +!__EOF__
       +pagefooter) > "${outputdir}/index.html"
        
       -# Sitemap: sitemap.xml
       -(cat <<!
       +# RSS
       +cat <<!__EOF__ > "${outputdir}/rss.xml"
        <?xml version="1.0" encoding="UTF-8"?>
       -<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
       -!
       +<rss version="2.0">
       +        <channel>
       +                <title>${sitetitle}</title>
       +                <link>${siteurlfull}</link>
       +                <description>${sitedescription}</description>
       +                <language>en</language>
       +                ${contentrss}
       +        </channel>
       +</rss>
       +!__EOF__
        
       -find ./ -type f -name "*.html" | sort | sed 's@^\./\(.*\)$@<url><loc>'${siteurlfull}'/\1</loc></url>@'
       +# Atom
       +cat <<!__EOF__ > "${outputdir}/atom.xml"
       +<?xml version="1.0" encoding="UTF-8"?>
       +<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
       +        <title type="text">${sitetitle}</title>
       +        <subtitle type="text">${sitedescription}</subtitle>
       +        <updated>${siteupdated}</updated>
       +        <link rel="alternate" type="text/html" href="${siteurlfull}" />
       +        <id>${siteurlfull}/atom.xml</id>
       +        <link rel="self" type="application/atom+xml" href="${siteurlfull}/atom.xml" />
       +        ${contentatom}
       +</feed>
       +!__EOF__
        
       -cat <<!
       -</urlset>
       -!
       -) > "sitemap.xml"
       +# sitemap: sitemap.xml
       +cat <<!__EOF__ > "${outputdir}/sitemap.xml"
       +<?xml version="1.0" encoding="UTF-8"?><urlset>${contentsitemap}</urlset>
       +!__EOF__
 (DIR) diff --git a/output/print.css b/output/print.css
       @@ -0,0 +1,9 @@
       +body {
       +        text-align: left;
       +}
       +#menuwrap {
       +        display: none;
       +}
       +#menu, #main {
       +        margin: 0;
       +}
 (DIR) diff --git a/output/style.css b/output/style.css
       @@ -0,0 +1,67 @@
       +body {
       +        font-family: sans-serif, monospace;
       +        text-align: center;
       +        overflow-y: scroll;
       +        color: #333;
       +        background-color: #fff;
       +        margin: 0;
       +        padding: 0;
       +}
       +table {
       +        border: 0;
       +}
       +hr {
       +        height: 1px;
       +        color: #ccc;
       +        background-color: #ccc;
       +        border: 0;
       +}
       +h1 {
       +        font-size: 140%;
       +}
       +h2 {
       +        font-size: 120%;
       +}
       +h3 {
       +        font-size: 100%;
       +}
       +h1, h1 a, h1 a:visited,
       +h2, h2 a, h2 a:visited,
       +h3, h3 a, h3 a:visited,
       +h1 a:hover, h2 a:hover, h3 a:hover {
       +        color: inherit;
       +        text-decoration: none;
       +}
       +table tr td {
       +        padding: 2px 10px 2px 0px;
       +}
       +pre {
       +        border: 1px dashed #777;
       +        background-color: #eee;
       +        padding: 5px;
       +        overflow-x: auto;
       +}
       +#menuwrap {
       +        background-color: #eee;
       +        padding: 1ex;
       +        border-bottom: 1px solid #ccc;
       +}
       +#main {
       +        padding: 1ex;
       +}
       +#menu,
       +#main {
       +        margin: 0px auto;
       +        text-align: left;
       +        max-width: 80ex;
       +}
       +#menu a {
       +        font-weight: bold;
       +        vertical-align: middle;
       +}
       +#links-contact {
       +        float: right;
       +}
       +.hidden {
       +        display: none;
       +}
 (DIR) diff --git a/site.conf b/site.conf
       @@ -1,28 +0,0 @@
       -#!/bin/sh
       -#
       -# Site title (part of ${pagetitle} probably).
       -sitetitle="Codemadness"
       -# Main site domain.
       -sitedomain="http://www.codemadness.nl"
       -# Short site domain.
       -sitedomainshort="codemadness.nl"
       -# Relative site url.
       -siteurlrel=""
       -# Full site url.
       -siteurlfull="${sitedomain}${siteurlrel}"
       -# Site keywords (default).
       -sitekeywords="blog, suckless, dwm-hiltjo"
       -# Site description (default).
       -sitedescription="blog with various projects and articles about computer-related things"
       -# used for contact "mail link".
       -sitemail="hiltjo@AT@codemadness.DOT.org"
       -
       -# Directories containing content and metadata.
       -# NOTE: it's recommended to use absolute paths here.
       -pagesdir="site/pages"
       -# Output dir.
       -outputdir="site/output"
       -# Layout dir.
       -layoutdir="site/layout"
       -#Markdown processor: default: is "smu".
       -#markdown="smu"
 (DIR) diff --git a/site/layout/atom/atom.sh b/site/layout/atom/atom.sh
       @@ -1,14 +0,0 @@
       -#!/bin/sh
       -
       -cat <<!__EOF__
       -<?xml version="1.0" encoding="UTF-8"?>
       -<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
       -        <title type="text">${sitetitle}</title>
       -        <subtitle type="text">${sitedescription}</subtitle>
       -        <updated>$(date "+%Y-%m-%dT%H:%M:%SZ" -d "${builddate}")</updated>
       -        <link rel="alternate" type="text/html" href="${siteurlfull}" />
       -        <id>${siteurlfull}/atom.xml</id>
       -        <link rel="self" type="application/atom+xml" href="${siteurlfull}/atom.xml" />
       -        ${content}
       -</feed>
       -!__EOF__
 (DIR) diff --git a/site/layout/atom/atomitem.sh b/site/layout/atom/atomitem.sh
       @@ -1,16 +0,0 @@
       -#!/bin/sh
       -
       -cat <<!__EOF__
       -<entry>
       -        <author>
       -                <name>${author}</name>
       -                <uri>${sitefullurl}</uri>
       -        </author>
       -        <title type="html"><![CDATA[${title}]]></title>
       -        <link rel="alternate" type="text/html" href="${urlfull}" />
       -        <id>${urlfull}</id>
       -        <updated>$(date "+%Y-%m-%dT%H:%M:%SZ" -d "${timestamp}")</updated>
       -        <published>$(date "+%Y-%m-%dT%H:%M:%SZ" -d "${timestamp}")</published>
       -        <summary type="html"><![CDATA[${description}]]></summary>
       -</entry>
       -!__EOF__
 (DIR) diff --git a/site/layout/index/index.sh b/site/layout/index/index.sh
       @@ -1,52 +0,0 @@
       -#!/bin/sh
       -
       -# prefix page title with site title, make sure its neatly formatted.
       -if [ "${title}" = "" ]; then
       -        pagetitle="${sitetitle}"
       -else
       -        pagetitle="${title} - ${sitetitle}"
       -fi
       -
       -cat <<!__EOF__
       -<!DOCTYPE HTML>
       -<html dir="ltr" lang="en">
       -        <head>
       -                <title>${pagetitle}</title>
       -                <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
       -                <link rel="stylesheet" href="print.css" type="text/css" media="print" />
       -                <link rel="alternate" type="application/rss+xml" title="${sitetitle} RSS Feed" href="rss.xml" />
       -                <link rel="alternate" type="application/atom+xml" title="${sitetitle} Atom Feed" href="atom.xml" />
       -                <link rel="icon" type="image/png" href="/favicon.png" />
       -                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
       -                <meta http-equiv="Content-Language" content="en" />
       -                <meta content="width=device-width" name="viewport" />
       -                <meta content="${sitekeywords}" name="keywords" />
       -                <meta content="${sitedescription}" name="description" />
       -        </head>
       -        <body>
       -                <div id="menuwrap">
       -                        <div id="menu">
       -                                <span id="links">
       -                                        <a href="${siteurlrel}/" title="Blog">Blog</a> |
       -                                        <a href="/downloads/projects/" title="Software I've written">Software</a>
       -                                </span>
       -                                <span id="links-contact">
       -                                        <span class="hidden"> | </span>
       -                                        <a href="rss.xml" title="Syndicate this site using RSS 2.0" class="rss">RSS</a> |
       -                                        <a href="atom.xml" title="Atom feed" class="atom">Atom</a> |
       -                                        <a href="mailto:${sitemail}" title="Mail me" class="mail">Mail</a>
       -                                </span>
       -                        </div>
       -                </div>
       -                <hr class="hidden" />
       -                <div id="mainwrap">
       -                        <div id="main">
       -<h1>${title}</h1>
       -<table>
       -                                ${content}
       -</table>
       -                        </div>
       -                </div>
       -        </body>
       -</html>
       -!__EOF__
 (DIR) diff --git a/site/layout/index/indexitem.sh b/site/layout/index/indexitem.sh
       @@ -1,3 +0,0 @@
       -#!/bin/sh
       -# row for index page.
       -printf '<tr><td class="lm">%s</td><td><a href="%s" title="%s">%s</a></td></tr>\n' "${timestamp}" "${url}" "${description}" "${title}"
 (DIR) diff --git a/site/layout/page/page.sh b/site/layout/page/page.sh
       @@ -1,50 +0,0 @@
       -#!/bin/sh
       -
       -# prefix page title with site title, make sure its neatly formatted.
       -if [ "${title}" = "" ]; then
       -        pagetitle="${sitetitle}"
       -else
       -        pagetitle="${title} - ${sitetitle}"
       -fi
       -
       -cat <<!__EOF__
       -<!DOCTYPE HTML>
       -<html dir="ltr" lang="en">
       -        <head>
       -                <title>${pagetitle}</title>
       -                <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
       -                <link rel="stylesheet" href="print.css" type="text/css" media="print" />
       -                <link rel="alternate" type="application/rss+xml" title="${sitetitle} RSS Feed" href="rss.xml" />
       -                <link rel="alternate" type="application/atom+xml" title="${sitetitle} Atom Feed" href="atom.xml" />
       -                <link rel="icon" type="image/png" href="/favicon.png" />
       -                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
       -                <meta http-equiv="Content-Language" content="en" />
       -                <meta content="width=device-width" name="viewport" />
       -                <meta content="${keywords}" name="keywords" />
       -                <meta content="${description}" name="description" />
       -        </head>
       -        <body>
       -                <div id="menuwrap">
       -                        <div id="menu">
       -                                <span id="links">
       -                                        <a href="${siteurlrel}/" title="Blog">Blog</a> |
       -                                        <a href="/downloads/projects/" title="Software I've written">Software</a>
       -                                </span>
       -                                <span id="links-contact">
       -                                        <span class="hidden"> | </span>
       -                                        <a href="rss.xml" title="Syndicate this site using RSS 2.0" class="rss">RSS</a> |
       -                                        <a href="atom.xml" title="Atom feed" class="atom">Atom</a> |
       -                                        <a href="mailto:${sitemail}" title="Mail me" class="mail">Mail</a>
       -                                </span>
       -                        </div>
       -                </div>
       -                <hr class="hidden" />
       -                <div id="mainwrap">
       -                        <div id="main">
       -                                <h1><a href="${urlrel}" title="${title}">${title}</a></h1>
       -                                ${content}
       -                        </div>
       -                </div>
       -        </body>
       -</html>
       -!__EOF__
 (DIR) diff --git a/site/layout/rss/rss.sh b/site/layout/rss/rss.sh
       @@ -1,14 +0,0 @@
       -#!/bin/sh
       -
       -cat <<!__EOF__
       -<?xml version="1.0" encoding="UTF-8"?>
       -<rss version="2.0">
       -        <channel>
       -                <title>${sitetitle}</title>
       -                <link>${siteurlfull}</link>
       -                <description></description>
       -                <language>en</language>
       -                ${content}
       -        </channel>
       -</rss>
       -!__EOF__
 (DIR) diff --git a/site/layout/rss/rssitem.sh b/site/layout/rss/rssitem.sh
       @@ -1,12 +0,0 @@
       -#!/bin/sh
       -
       -cat <<!__EOF__
       -<item>
       -        <title>${title}</title>
       -        <link>${urlfull}</link>
       -        <pubDate>$(date -R -d "${timestamp}")</pubDate>
       -        <author>${author}</author>
       -        <guid isPermaLink="false">${urlfull}</guid>
       -        <description><![CDATA[${description}]]></description>
       -</item>
       -!__EOF__
 (DIR) diff --git a/site/output/print.css b/site/output/print.css
       @@ -1,12 +0,0 @@
       -body {
       -        text-align: left;
       -}
       -#menuwrap {
       -        display: none;
       -}
       -#menu, #main {
       -        margin: 0;
       -}
       -pre, code {
       -        white-space: pre-wrap;
       -}
 (DIR) diff --git a/site/output/style.css b/site/output/style.css
       @@ -1,69 +0,0 @@
       -body {
       -        font-family: sans-serif, monospace;
       -        text-align: center;
       -        overflow-y: scroll;
       -        color: #333;
       -        background-color: #fff;
       -        margin: 0;
       -        padding: 0;
       -}
       -table {
       -        border: 0;
       -}
       -hr {
       -        height: 1px;
       -        color: #ccc;
       -        background-color: #ccc;
       -        border: 0;
       -}
       -h1 {
       -        font-size: 140%;
       -}
       -h2 {
       -        font-size: 120%;
       -}
       -h3 {
       -        font-size: 100%;
       -}
       -h1, h1 a, h1 a:visited,
       -h2, h2 a, h2 a:visited,
       -h3, h3 a, h3 a:visited,
       -h1 a:hover, h2 a:hover, h3 a:hover {
       -        color: inherit;
       -        text-decoration: none;
       -}
       -table tr td {
       -        padding: 2px 10px 2px 0px;
       -}
       -code {
       -        border: 1px dashed #777;
       -        background-color: #eee;
       -        padding: 5px;
       -        overflow-x: auto;
       -        white-space: nowrap;
       -        word-wrap: normal;
       -}
       -#menuwrap {
       -        background-color: #eee;
       -        padding: 1ex;
       -        border-bottom: 1px solid #ccc;
       -}
       -#main {
       -        padding: 1ex;
       -}
       -#menu,
       -#main {
       -        margin: 0px auto;
       -        text-align: left;
       -        max-width: 80ex;
       -}
       -#menu a {
       -        font-weight: bold;
       -        vertical-align: middle;
       -}
       -#links-contact {
       -        float: right;
       -}
       -.hidden {
       -        display: none;
       -}
 (DIR) diff --git a/site/pages/example-page-template.html b/site/pages/example-page-template.html
       @@ -1 +0,0 @@
       -<p>This is an example page :)</p>
 (DIR) diff --git a/site/pages/example-page-template.sh b/site/pages/example-page-template.sh
       @@ -1,11 +0,0 @@
       -#!/bin/sh
       -title="Example title"
       -description="description here"
       -id="example-page-template"
       -url="${id}.html"
       -tags="tags, comma, separated"
       -keywords="keywords, comma, separated"
       -categories="Category name"
       -timestamp="2013-01-01"
       -author="author"
       -#content="custom stuff"
 (DIR) diff --git a/site/pages/markdown-test.md b/site/pages/markdown-test.md
       @@ -1,61 +0,0 @@
       -simple tests
       -------------
       -
       -first paragraph.
       -testing surround: _emph_ then **strong** and `code`.
       -
       -`\`escaped backticks\``.
       -
       -`x = *y * 6;`
       -
       -horizontal rule:
       -
       -- - -
       -
       -
       -blocks and entities
       --------------------
       -
       -preformatted block:
       -        .'''' .'.'. |  |
       -         '''. | ' | |  |
       -        ''''  '   '  ""
       -
       -quoted text:
       -> When in doubt,
       -> use brute force.
       -
       -list:
       -* Make each program do one thing well.
       -* Expect the output of every program to become the input to another,
       -as yet unknown, program.
       -* Design and build software, even operating systems, to be tried early,
       -ideally within weeks.
       -* Use tools in preference to unskilled help to lighten a programming task.
       -
       -list in list:
       -* a
       -  * b
       -    1. c
       -    2. d
       -  * e
       -* f
       -
       -entity: &, <, >
       -
       -code:
       -        int powerof2(unsigned int n) {
       -                return !((n - 1) & n) && n > 0;
       -        }
       -
       -links
       ------
       -
       -[suckless](http://suckless.org)
       -
       -inline html
       ------------
       -
       -<center>
       -        ABC
       -</center>
 (DIR) diff --git a/site/pages/markdown-test.sh b/site/pages/markdown-test.sh
       @@ -1,11 +0,0 @@
       -#!/bin/sh
       -title="Markdown test"
       -description="description here"
       -id="markdown-test"
       -url="${id}.html"
       -tags="tags, comma, separated"
       -keywords="keywords, comma, separated"
       -categories="Category name"
       -timestamp="2013-01-02"
       -author="author"
       -#content="custom stuff"