cleanup and use consistent variable naming - 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 e249829a851b58876124433b43c72c02b8ca81df
 (DIR) parent 94bed6022e16b4095581d31c38056be14675d4c3
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Sun, 15 Dec 2013 20:32:59 +0100
       
       cleanup and use consistent variable naming
       
       Signed-off-by: Hiltjo Posthuma <hiltjo@codemadness.org>
       
       Diffstat:
         M generate.sh                         |     110 ++++++++++++++++---------------
         D layout/atom/atom.sh                 |      14 --------------
         D layout/atom/atomitem.sh             |      16 ----------------
         D layout/index/index.sh               |      52 -------------------------------
         D layout/index/indexitem.sh           |       3 ---
         D layout/page/page.sh                 |      50 -------------------------------
         D layout/rss/rssitem.sh               |      12 ------------
         A site/layout/atom/atom.sh            |      14 ++++++++++++++
         A site/layout/atom/atomitem.sh        |      16 ++++++++++++++++
         A site/layout/index/index.sh          |      52 +++++++++++++++++++++++++++++++
         A site/layout/index/indexitem.sh      |       3 +++
         A site/layout/page/page.sh            |      50 +++++++++++++++++++++++++++++++
         R layout/rss/rss.sh -> site/layout/r… |       0 
         A site/layout/rss/rssitem.sh          |      12 ++++++++++++
         R pages/example-page-template.html -… |       0 
         R pages/example-page-template.sh -> … |       0 
       
       16 files changed, 204 insertions(+), 200 deletions(-)
       ---
 (DIR) diff --git a/generate.sh b/generate.sh
       @@ -1,14 +1,11 @@
        #!/bin/sh
       -# Generate a simple static site with an index page.
       -# Author:  Hiltjo Posthuma <hiltjo@codemadness.org>
       -# License: WTFPL
        
        # Syntax highlight code.
        code_highlight() {
       -        echo '<pre>'
       +        printf '%s\n' '<pre>'
                # 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 ' '
       -        echo '</pre>'
       +        printf '%s\n' '</pre>'
        }
        
        # page_metadata(filename)
       @@ -17,82 +14,93 @@ page_metadata() {
                tags=""
                title=""
                url=""
       -        pagetitle=""
                description="${sitedescription}"
                keywords="${sitekeywords}"
                filename=""
                content=""
                categories=""
                timestamp=""
       -        [ -f "$1" ] && . "$1" # load page metadata.
       +        [ ! "$1" = "" ] && [ -f "$1" ] && . "$1" # load page metadata.
        }
        
       -# Read config file.
       -configfile="$1"
       -if [ "$configfile" = "" ]; then
       -        configfile="./config.sh"
       -fi
       -if [ -f "$configfile" ]; then
       -        . "$configfile"
       -else
       -        echo "$configfile not found or not a file." >&2
       -        exit 1
       -fi
       +# 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"
       +        else
       +                echo "$0 [configfile]" >&2
       +                echo "" >&2
       +                echo "Configuration file \"$config\" does not exist or is not readable." >&2
       +                exit 1
       +        fi
       +}
        
       -# Remember current dir.
       -pwddir="$(pwd)"
       +# Read config file.
       +loadconfig "$1"
       +config="$1"
        
       -# Make output dir.
       -mkdir -p "$outputdir"
       +# 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"
       +        echo > "${outputdir}/${name}"
        done
       -find "$pagesdir" -name "*.sh" | while read page; do
       -        page_metadata "$page" # load page metadata.
       -        printf "%s\t%s\n" "$timestamp" "$page"
       -done | sort -rn | while read ts meta; do # process in order of time descending.
       -        pagename=$(basename "$meta" ".sh")
       -        page_metadata "$meta"
       +find "${pagesdir}" -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}"
                urlfull="${sitefullurl}/${url}"
                #url="${siterelurl}/${url}"
       -        if [ -f "$pagesdir/$pagename.html" ]; then
       -                filename="$pagesdir/$pagename.html"
       -                content=$(cat "$filename")
       -        elif [ -f "$pagesdir/$pagename.md" ]; then
       +        if [ -f "${pagesdir}/${pagename}.html" ]; then
       +                filename="${pagesdir}/${pagename}.html"
       +                content=$(cat "${filename}")
       +        elif [ -f "${pagesdir}/${pagename}.md" ]; then
                        # TODO: test markdown
       -                filename="$pagesdir/$pagename.md"
       -                content=$("$markdown" "$filename")
       +                filename="${pagesdir}/${pagename}.md"
       +                content=$("${markdown}" "${filename}")
                fi
       -        . "$layoutdir/page/page.sh" > "$outputdir/$pagename.html"
       -        . "$layoutdir/rss/rssitem.sh" >> "$outputdir/rss.xml"
       -        . "$layoutdir/atom/atomitem.sh" >> "$outputdir/atom.xml"
       -        . "$layoutdir/index/indexitem.sh" >> "$outputdir/index.html"
       +        . "${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"
       +content=$(cat "${outputdir}/index.html")
       +. "${layoutdir}/index/index.sh" > "${outputdir}/index.html"
        
        # RSS
        page_metadata ""
       -content=$(cat "$outputdir/rss.xml")
       -. "$layoutdir/rss/rss.sh" > "$outputdir/rss.xml"
       +content=$(cat "${outputdir}/rss.xml")
       +. "${layoutdir}/rss/rss.sh" > "${outputdir}/rss.xml"
        
        # Atom
        page_metadata ""
       -content=$(cat "$outputdir/atom.xml")
       -. "$layoutdir/atom/atom.sh" > "$outputdir/atom.xml"
       +content=$(cat "${outputdir}/atom.xml")
       +. "${layoutdir}/atom/atom.sh" > "${outputdir}/atom.xml"
        
        # Goto output dir to make relative urls.
       -cd "$outputdir"
       +cd "${outputdir}"
        
        # Sitemap: urllist.txt
       -find ./ -type f -name "*.html" | sort | sed 's@^./\(.*\)$@'$sitefullurl'/\1@' > "urllist.txt"
       +find ./ -type f -name "*.html" | sort | sed 's@^./\(.*\)$@'${sitefullurl}'/\1@' > "urllist.txt"
        
        # Sitemap: sitemap.xml
        (cat <<!
       @@ -100,7 +108,7 @@ find ./ -type f -name "*.html" | sort | sed 's@^./\(.*\)$@'$sitefullurl'/\1@' > 
        <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        !
        
       -find ./ -type f -name "*.html" | sort | sed 's@^./\(.*\)$@<url><loc>'$sitefullurl'/\1</loc></url>@'
       +find ./ -type f -name "*.html" | sort | sed 's@^./\(.*\)$@<url><loc>'${sitefullurl}'/\1</loc></url>@'
        
        cat <<!
        </urlset>
       @@ -108,8 +116,4 @@ cat <<!
        ) > "sitemap.xml"
        
        # Restore current dir.
       -cd "$pwddir"
       -
       -# Copy stylesheets.
       -cp "style.css" "$outputdir"
       -cp "print.css" "$outputdir"
       +cd "${basedir}"
 (DIR) diff --git a/layout/atom/atom.sh b/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="${sitefullurl}" />
       -        <id>${sitefullurl}/atom.xml</id>
       -        <link rel="self" type="application/atom+xml" href="${sitefullurl}/atom.xml" />
       -        ${content}
       -</feed>
       -!__EOF__
 (DIR) diff --git a/layout/atom/atomitem.sh b/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/layout/index/index.sh b/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="${keywords}" name="keywords" />
       -                <meta content="${description}" name="description" />
       -        </head>
       -        <body>
       -                <div id="menuwrap">
       -                        <div id="menu">
       -                                <span id="links">
       -                                        <a href="${siterelurl}/" 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>Posts</h1>
       -<table>
       -                                ${content}
       -</table>
       -                        </div>
       -                </div>
       -        </body>
       -</html>
       -!__EOF__
 (DIR) diff --git a/layout/index/indexitem.sh b/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/layout/page/page.sh b/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="${siterelurl}/" 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/layout/rss/rssitem.sh b/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/layout/atom/atom.sh b/site/layout/atom/atom.sh
       @@ -0,0 +1,14 @@
       +#!/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="${sitefullurl}" />
       +        <id>${sitefullurl}/atom.xml</id>
       +        <link rel="self" type="application/atom+xml" href="${sitefullurl}/atom.xml" />
       +        ${content}
       +</feed>
       +!__EOF__
 (DIR) diff --git a/site/layout/atom/atomitem.sh b/site/layout/atom/atomitem.sh
       @@ -0,0 +1,16 @@
       +#!/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
       @@ -0,0 +1,52 @@
       +#!/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="${siterelurl}/" 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
       @@ -0,0 +1,3 @@
       +#!/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
       @@ -0,0 +1,50 @@
       +#!/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="${siterelurl}/" 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/layout/rss/rss.sh b/site/layout/rss/rss.sh
 (DIR) diff --git a/site/layout/rss/rssitem.sh b/site/layout/rss/rssitem.sh
       @@ -0,0 +1,12 @@
       +#!/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/pages/example-page-template.html b/site/pages/example-page-template.html
 (DIR) diff --git a/pages/example-page-template.sh b/site/pages/example-page-template.sh