aboutsummaryrefslogtreecommitdiff
path: root/pblog.sh
diff options
context:
space:
mode:
authorBradley Taunt <bt@btxx.org>2024-01-19 13:19:41 -0500
committerBradley Taunt <bt@btxx.org>2024-01-19 13:19:41 -0500
commit85f2c8d0d69ac0195bf6a20e396077dee0e9aefa (patch)
tree4f3bd878e20e7e057f91da6632a215b004d10c49 /pblog.sh
Initial commit for new cgit platform
Diffstat (limited to 'pblog.sh')
-rw-r--r--pblog.sh84
1 files changed, 84 insertions, 0 deletions
diff --git a/pblog.sh b/pblog.sh
new file mode 100644
index 0000000..26d163c
--- /dev/null
+++ b/pblog.sh
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+source _config.sh
+
+###################################################################################
+# !WARNING!
+# You probably don't need to tweak anything below this line. Edit at your own risk!
+###################################################################################
+
+# Create the $OUTPUT directory if it does not exist yet
+mkdir -p $OUTPUT
+
+if [[ $TOC = true ]]
+ then
+ TOC_TOGGLE="--toc";
+ else
+ TOC_TOGGLE="";
+fi
+
+if [[ $SYNTAX = true ]]
+ then
+ SYNTAX_TOGGLE="";
+ else
+ SYNTAX_TOGGLE="--no-highlight";
+fi
+
+# Create the web browser-focused HTML versions for all posts
+for i in $POSTS; do pandoc --css=../style.css --ascii --metadata lang="$HTML_LANG" $TOC_TOGGLE $SYNTAX_TOGGLE --wrap=none -A _footer.html -B _header.html -s $i -o ${i%.*}.html; done;
+
+rsync $POSTS_DIR*.html $OUTPUT$WEB_HTML;
+rm $POSTS_DIR*.html
+
+# Create the web browser-focused HTML versions for all pages
+for i in $PAGES; do pandoc --css=style.css --ascii --metadata lang="$HTML_LANG" $TOC_TOGGLE $SYNTAX_TOGGLE --wrap=none -A _footer.html -B _header.html -s $i -o ${i%.*}.html; done;
+
+rsync $PAGES_DIR*.html $OUTPUT;
+rm $PAGES_DIR*.html
+
+# Copy XSLT, stylesheet, and media files
+rsync rss.xsl $OUTPUT;
+rsync style.css $OUTPUT;
+rsync -r media $OUTPUT;
+
+# Remove the default blog index to avoid pulling into the XML feed
+rm $OUTPUT$WEB_HTML/index.html
+
+echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
+<?xml-stylesheet href=\"rss.xsl\" type=\"text/xsl\"?>
+<rss version=\"2.0\">
+ <channel>
+ <title>$TITLE</title>
+ <link>$DOMAIN</link>
+ <description>$DESCRIPTION</description>
+ <copyright>$COPYRIGHT</copyright>
+ <ttl>$TTL</ttl>";
+
+for file in $OUTPUT$WEB_HTML*; do
+
+POST_DATE=$(sed -n 's|^<p class="date">\([^<]*\)</p>$|\1|p' $file)
+POST_TITLE=$(sed -n 's|^<h1 class="title">\([^<]*\)</h1>$|\1|p' $file)
+POST_CONTENT=$(sed -n '/<article>/,/<\/article>/p' $file | sed -e '1s/.*<article>//' -e '$s/<\/article>.*//')
+
+if [[ $OS = "BSD" ]]
+then
+ CAT_DATE=$(gdate -d "$(sed -n 's|^<p class="date">\([^<]*\)</p>$|\1|p' $file)" +"%Y/%m/%d/%u")
+ POST_DATE=$(gdate -d "$(sed -n 's|^<p class="date">\([^<]*\)</p>$|\1|p' $file)" +"%a, %d %b %Y")
+else
+ CAT_DATE=$(date -d "$(sed -n 's|^<p class="date">\([^<]*\)</p>$|\1|p' $file)" +"%Y/%m/%d/%u")
+ POST_DATE=$(date -d "$(sed -n 's|^<p class="date">\([^<]*\)</p>$|\1|p' $file)" +"%a, %d %b %Y")
+fi
+
+echo "<item>
+ <pubDate>$POST_DATE $TIME</pubDate>
+ <category>$CAT_DATE</category>
+ <title>$POST_TITLE</title>
+ <link>$DOMAIN/$WEB_HTML$(basename ${file})</link>
+ <description><![CDATA[$POST_CONTENT]]></description>
+ <author>$AUTHOR</author>
+ <guid>$DOMAIN/$WEB_HTML$(basename ${file})</guid>
+ </item>";
+done
+
+echo " </channel>
+</rss>";