various fixes - static-site-scripts - static site generator shellscripts | |
git clone git://git.codemadness.org/static-site-scripts | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 928dd12f6c8ce14c883773f26eca4cc69a59848e | |
parent 3d19254a303d415ca128ce07605f336f76e394b1 | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Sun, 2 Mar 2014 12:00:58 +0100 | |
various fixes | |
Signed-off-by: Hiltjo Posthuma <[email protected]> | |
Diffstat: | |
M generate.sh | 65 ++++++++++++++++-------------… | |
1 file changed, 33 insertions(+), 32 deletions(-) | |
--- | |
diff --git a/generate.sh b/generate.sh | |
@@ -3,15 +3,13 @@ | |
sitetitle="Codemadness" | |
# main site domain. | |
sitedomain="http://www.codemadness.nl" | |
-# short site domain. | |
-sitedomainshort="codemadness.nl" | |
-# relative site url. | |
+# relative site url, can be "/blog" or something. | |
siteurlrel="" | |
# full site url. | |
siteurlfull="${sitedomain}${siteurlrel}" | |
-# site keywords (default). | |
+# site keywords (global default), don't use too many. | |
sitekeywords="blog, suckless, dwm-hiltjo" | |
-# site description (default). | |
+# site description (global default). | |
sitedescription="blog with various projects and articles about computer-relate… | |
# sitem mail used for contact "mail link". | |
sitemail="hiltjo@[email protected]" | |
@@ -19,7 +17,6 @@ sitemail="hiltjo@[email protected]" | |
siteauthor="hiltjo" | |
# site last updated (default use date when script was run). | |
siteupdated=$(date "+%Y-%m-%dT%H:%M:%SZ") | |
- | |
# Directories containing content and metadata. | |
# NOTE: it's recommended to use absolute paths here. | |
pagesdir="pages" | |
@@ -28,25 +25,24 @@ outputdir="output" | |
# Markdown processor: default: is "smu". | |
markdown="smu" | |
-# initial values for page variables. | |
-#page_reset() | |
+# initial values for page variables, use some site vars as global defaults. | |
page_reset() { | |
id="" | |
- tags="" | |
title="" | |
url="" | |
description="${sitedescription}" | |
keywords="${sitekeywords}" | |
+ author="${siteauthor}" | |
content="" | |
+ tags="" | |
categories="" | |
timecreated="" | |
datecreated="" | |
timeupdated="" | |
dateupdated="" | |
- author="${siteauthor}" | |
} | |
-#makeid(title) | |
+#makeid(title), format "Some title" to "some-title". | |
makeid() { | |
printf '%s\n' "$1" | tr '[:upper:]' '[:lower:]' | sed -e 's@[^a-zA-Z0-… | |
-e 's@[-]*$@@g' -e 's@^[-]*@@g' | |
@@ -81,6 +77,7 @@ pageheader() { | |
<meta content="width=device-width" name="viewport" /> | |
<meta content="${keywords}" name="keywords" /> | |
<meta content="${description}" name="description" /> | |
+ <meta content="${author}" name="author" /> | |
</head> | |
<body> | |
<div id="menuwrap"> | |
@@ -114,7 +111,7 @@ pagefooter() { | |
} | |
if [ ! -d "${pagesdir}" ]; then | |
- echo "Error: pages directory \"${pagesdir}\" not found." >&2 | |
+ printf '%s\n' "Error: pages directory \"${pagesdir}\" not found." >&2 | |
exit 1 | |
fi | |
@@ -134,16 +131,21 @@ while read -r meta; do | |
datecreated=$(printf '%s' "${timecreated}" | cut -b 1-10) | |
dateupdated=$(printf '%s' "${timeupdated}" | cut -b 1-10) | |
- # set unset variables. | |
+ # if ${id} is empty and title is set generate id. | |
if [ "${id}" = "" ] && [ ! "${title}" = "" ]; then | |
id=$(makeid "${title}") | |
fi | |
+ if [ "${id}" = "" ]; then | |
+ printf '%s\n' "Warning: \$id or \$title not set in \"${meta}\"… | |
+ continue | |
+ fi | |
if [ "${url}" = "" ]; then | |
url="${id}.html" | |
fi | |
- urlfull="${siteurlfull}/${url}" | |
+ outfile="${id}.html" | |
+ urlfull="${siteurlfull}/${outfile}" | |
filename="" | |
- # content not set; try data from filetypes. | |
+ # ${content} not set; try data from filetypes. | |
if [ "${content}" = "" ]; then | |
if [ -f "${pagesdir}/${basename}.html" ]; then | |
filename="${pagesdir}/${basename}.html" | |
@@ -151,13 +153,8 @@ while read -r meta; do | |
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 | |
- # page | |
if [ "${datecreated}" = "${dateupdated}" ]; then | |
created="<strong>Created on:</strong> ${dateupdated}<br/>" | |
else | |
@@ -166,17 +163,21 @@ while read -r meta; do | |
fi | |
(pageheader | |
cat <<!__EOF__ | |
- <h1><a href="${siteurlrel}/${url}" title="${title}">${title}</… | |
+ <h1><a href="">${title}</a></h1> | |
<em>${created}</em> | |
${content} | |
!__EOF__ | |
- pagefooter) > "${outputdir}/${url}" | |
+ pagefooter) > "${outputdir}/${outfile}" | |
- # index: append item on index page. | |
- contentindex="${contentindex}<tr><td class=\"lm\">${dateupdated}</td> | |
- <td><a href=\"${url}\" title=\"${description}\">${title}<… | |
+ # index / posts item: append. | |
+ contentindex="${contentindex}$(cat <<!__EOF__ | |
+ <tr><td class="lm">${dateupdated}</td> | |
+ <td><a href="${url}" title="${description}">${title}</a></td><… | |
+!__EOF__ | |
+)" | |
- # RSS item: append | |
+ # RSS item: append. | |
+ # NOTE: GMT is hard-coded since %z is not consistent, change according… | |
contentrsspubdate=$(date "+%a, %d %b %Y %H:%M:%S GMT" -d "${timeupdate… | |
contentrss="${contentrss}$( | |
cat <<!__EOF__ | |
@@ -185,20 +186,20 @@ while read -r meta; do | |
<link>${urlfull}</link> | |
<pubDate>${contentrsspubdate}</pubDate> | |
<author>${author}</author> | |
- <guid isPermaLink=\"false\">${urlfull}</guid> | |
+ <guid isPermaLink="false">${urlfull}</guid> | |
<description><![CDATA[${description}]]></description> | |
</item> | |
!__EOF__ | |
)" | |
- # Atom item: append | |
+ # 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}\"… | |
+ <title type="html"><![CDATA[${title}]]></title> | |
+ <link rel="alternate" type="text/html" href="${urlfull}" /> | |
<id>${urlfull}</id> | |
<updated>${contentatomupdated}</updated> | |
<published>${contentatompublished}</published> | |
@@ -206,7 +207,7 @@ while read -r meta; do | |
<name>${author}</name> | |
<uri>${siteurlfull}</uri> | |
</author> | |
- <summary type=\"html\"><![CDATA[${description}]]></summary> | |
+ <summary type="html"><![CDATA[${description}]]></summary> | |
</entry> | |
!__EOF__ | |
)" | |
@@ -214,7 +215,7 @@ while read -r meta; do | |
# sitemap: sitemap.xml, append item. | |
contentsitemap="${contentsitemap}<url><loc>${urlfull}</loc></url>" | |
- # sitemap: urllist.txt, just write directly. | |
+ # sitemap: urllist.txt, append item write directly to file. | |
printf '%s\n' "${urlfull}" >> "${outputdir}/urllist.txt" | |
done <<!FILELIST | |
$(find "${pagesdir}" -type f -name "*.sh" | sort -rn) |