Moved to Makefile based build system
Got rid of janky build.sh script. Now uses a bunch of janky scripts and a make file - because that is bound to be easier to maintain.
This commit is contained in:
parent
39791363fa
commit
56f95cb9aa
13 changed files with 289 additions and 234 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,6 +1,8 @@
|
|||
generated-template-parts
|
||||
public_html
|
||||
public_gemini
|
||||
public
|
||||
gem-cert
|
||||
tmp
|
||||
assets/css/main.min.css
|
||||
xxx-*
|
||||
|
|
98
Makefile
Normal file
98
Makefile
Normal file
|
@ -0,0 +1,98 @@
|
|||
export ALLTAGS := $(shell bin/listTags)
|
||||
ALLBLOGS := $(shell bin/listBlogs all)
|
||||
STANDALONE := $(subst .md,,$(subst content/,,$(wildcard content/*.md)))
|
||||
.SECONDEXPANSION:
|
||||
|
||||
.PHONY: blogs tags standalone push-blog push-assets all clean
|
||||
|
||||
####################
|
||||
# TEMPLATE PARTS #
|
||||
####################
|
||||
|
||||
|
||||
tmp/templates/taglist.html:
|
||||
mkdir -p tmp/templates/
|
||||
bin/htmlTagList $(ALLTAGS) > $@
|
||||
|
||||
|
||||
############
|
||||
# INTROS #
|
||||
############
|
||||
|
||||
tmp/intros/%.html: content/blog/*-%.md
|
||||
mkdir -p tmp/intros/
|
||||
bin/htmlIntro $< > $@
|
||||
|
||||
tmp/intros/%.rss: content/blog/*-%.md
|
||||
mkdir -p tmp/intros/
|
||||
bin/rssIntro $< > $@
|
||||
|
||||
tmp/intros/%.gmi: content/blog/*-%.md
|
||||
mkdir -p tmp/intros/
|
||||
bin/gmiIntro $< > $@
|
||||
|
||||
##############
|
||||
# ARCHIVES #
|
||||
##############
|
||||
|
||||
public/feed.rss: $(foreach blog, $(ALLBLOGS), tmp/intros/$(blog).rss )
|
||||
mkdir -p public
|
||||
bin/generateRSS $^ > $@
|
||||
|
||||
public/index.html: $(foreach blog, $(ALLBLOGS), tmp/intros/$(blog).html )
|
||||
mkdir -p public
|
||||
bin/htmlIndex index $^ > $@
|
||||
|
||||
public/index.gmi: $(foreach blog, $(ALLBLOGS), tmp/intros/$(blog).gmi )
|
||||
mkdir -p public
|
||||
bin/gmiIndex index $^ > $@
|
||||
|
||||
public/tag/%/index.html: $$(foreach blog, $$(shell bin/listBlogs % ), tmp/intros/$$(blog).html ) tmp/templates/taglist.html
|
||||
mkdir -p $(@D)
|
||||
bin/htmlIndex tag $* $^ > $@
|
||||
|
||||
|
||||
|
||||
###########
|
||||
# Pages #
|
||||
###########
|
||||
|
||||
public/blog/%/index.html: content/blog/*-%.md tmp/templates/taglist.html
|
||||
mkdir -p $(@D)
|
||||
pandoc --template=templates/blog.html -f markdown -t html5 -M comments $< > $@
|
||||
|
||||
public/%/index.html: content/%.md tmp/templates/taglist.html
|
||||
mkdir -p $(@D)
|
||||
pandoc --template=templates/blog.html -f markdown -t html5 -M comments $< > $@
|
||||
|
||||
public/blog/%/index.gmi: content/blog/*-%.md
|
||||
mkdir -p $(@D)
|
||||
echo -n "# " > $@
|
||||
grep 'title: ' $< | cut -d ' ' -f 2- >> $@
|
||||
echo "" >> $@
|
||||
md2gemini -f -l paragraph $< >> $@
|
||||
|
||||
public/card:
|
||||
content/card.curl > $@
|
||||
|
||||
###########
|
||||
# PHONY #
|
||||
###########
|
||||
|
||||
tags: $(foreach tag, $(ALLTAGS), public/tag/$(shell echo $(tag) | tr 'A-Z' 'a-z')/index.html )
|
||||
|
||||
blogs: $(foreach blog, $(ALLBLOGS), public/blog/$(shell echo $(blog) | tr 'A-Z' 'a-z')/index.html ) $(foreach blog, $(ALLBLOGS), public/blog/$(shell echo $(blog) | tr 'A-Z' 'a-z')/index.gmi )
|
||||
|
||||
standalone: $(foreach page, $(STANDALONE), public/$(page)/index.html )
|
||||
|
||||
all: tags blogs standalone public/index.html public/feed.rss public/card
|
||||
|
||||
push-blog:
|
||||
rsync -azvhP ./public/ generalPurpose:docker/jonathanh/public
|
||||
|
||||
push-assets:
|
||||
rsync -azvhP ./assets/ generalPurpose:docker/jonathanh/public/assets
|
||||
|
||||
clean:
|
||||
rm -rf public/*
|
||||
rm -rf tmp/
|
15
bin/generateRSS
Executable file
15
bin/generateRSS
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
lastUpdate="$(date --utc "+%a, %d %b %Y %H:%M:%S") UT"
|
||||
echo "<?xml version='1.0' encoding='UTF-8' ?>
|
||||
<rss xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:atom=\"http://www.w3.org/2005/Atom\" version=\"2.0\">
|
||||
<channel>
|
||||
<title><![CDATA[Jonathan Hodgson]]></title>
|
||||
<description><![CDATA[Jonathan Hodgson's Blog]]></description>
|
||||
<link>https://jonathanh.co.uk</link>
|
||||
<lastBuildDate>$lastUpdate</lastBuildDate>"
|
||||
|
||||
for i in "$@"; do
|
||||
cat "$i"
|
||||
done
|
||||
echo "</channel></rss>"
|
35
bin/gmiIndex
Executable file
35
bin/gmiIndex
Executable file
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
case "$1" in
|
||||
tag)
|
||||
title="Archive: $(echo "$ALLTAGS" | tr ' _' '\n ' | grep -i "$(echo "$2" | tr '_' ' ')")"
|
||||
template="$(echo "" | pandoc --template=templates/blog.html \
|
||||
-f markdown -t html5 -M archive -M title:"$title" 2> /dev/null )"
|
||||
shift
|
||||
;;
|
||||
index)
|
||||
echo "# Jonathan Hodgson"
|
||||
echo ""
|
||||
echo "## Blogs"
|
||||
echo ""
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
shift
|
||||
|
||||
|
||||
|
||||
for i in "$@"; do
|
||||
case "$i" in
|
||||
tmp/intros/*)
|
||||
cat "$i"
|
||||
echo ""
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
echo "## Other Links"
|
||||
echo "=> /help-me-out/ Help Me Out"
|
||||
echo "=> /other-stuff-you-might-like/ Other Stuff You Might Like"
|
19
bin/gmiIntro
Executable file
19
bin/gmiIntro
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
file="$1"
|
||||
|
||||
getBlogSlug(){
|
||||
echo "$1" | sed 's/^content\//\//' | sed 's/.md$/\//' | sed -E 's/[0-9]+-//'
|
||||
}
|
||||
|
||||
info="$(sed -n '/---/,/---/p' "$file" | sed '/^$/,$d' | sed -n '1,/---/p' | sed '/^---$/d')"
|
||||
|
||||
slug=$(getBlogSlug "$file")
|
||||
date="$(echo "$info" | yq -r .date)"
|
||||
title="$(echo "$info" | yq -r .title)"
|
||||
description="$(echo "$info" | yq -r .description)"
|
||||
|
||||
echo "=> $slug $title"
|
||||
echo -e "\t$date"
|
||||
echo "$description"
|
||||
|
27
bin/htmlIndex
Executable file
27
bin/htmlIndex
Executable file
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
case "$1" in
|
||||
tag)
|
||||
title="Archive: $(echo "$ALLTAGS" | tr ' _' '\n ' | grep -i "$(echo "$2" | tr '_' ' ')")"
|
||||
template="$(echo "" | pandoc --template=templates/blog.html \
|
||||
-f markdown -t html5 -M archive -M title:"$title" 2> /dev/null )"
|
||||
shift
|
||||
;;
|
||||
index)
|
||||
template="$(echo "" | pandoc --template=templates/blog.html \
|
||||
-f markdown -t html5 -M frontpage 2> /dev/null )"
|
||||
;;
|
||||
esac
|
||||
|
||||
shift
|
||||
|
||||
|
||||
echo "$template" | sed -n '1,/#CONTENT#/p' | head -n -1
|
||||
|
||||
for i in "$@"; do
|
||||
case "$i" in
|
||||
tmp/intros/*) cat "$i" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "$template" | sed -n '/#CONTENT#/,$p' | sed '1d'
|
25
bin/htmlIntro
Executable file
25
bin/htmlIntro
Executable file
|
@ -0,0 +1,25 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
file="$1"
|
||||
|
||||
getBlogSlug(){
|
||||
echo "$1" | sed 's/^content\//\//' | sed 's/.md$/\//' | sed -E 's/[0-9]+-//'
|
||||
}
|
||||
|
||||
info="$(sed -n '/---/,/---/p' "$file" | sed '/^$/,$d' | sed -n '1,/---/p' | sed '/^---$/d')"
|
||||
|
||||
slug=$(getBlogSlug "$file")
|
||||
date="$(echo "$info" | yq -r .date)"
|
||||
title="$(echo "$info" | yq -r .title)"
|
||||
description="$(echo "$info" | yq -r .description)"
|
||||
|
||||
echo "<article>
|
||||
<h2><a href='$slug'>$title</a></h2>
|
||||
<div class="article-details">
|
||||
<div class="date">
|
||||
$date
|
||||
</div>
|
||||
</div>
|
||||
<p>$description</p>
|
||||
<p><a href='$slug'>Read More</a></p>
|
||||
</article>"
|
11
bin/htmlTagList
Executable file
11
bin/htmlTagList
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
echo "<ul class='taglist'>"
|
||||
|
||||
for line in "$@"; do
|
||||
link="/tag/$(echo "$line" | tr 'A-Z' 'a-z')/"
|
||||
name="$(echo "$line" | tr '_' ' ')"
|
||||
echo "<li><a href='$link'>$name</a></li>"
|
||||
done
|
||||
|
||||
echo "</ul>"
|
23
bin/listBlogs
Executable file
23
bin/listBlogs
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
tag="$(echo "$1" | tr ' ' '_' | tr 'A-Z' 'a-z')"
|
||||
|
||||
if [ "$tag" == "all" ]; then
|
||||
find content/blog/ -type f -name '*.md' -not -name 'xxx-*' | sort -r -u |
|
||||
cut -d '-' -f 2- | cut -d '.' -f 1
|
||||
else
|
||||
find content/blog/ -type f -name '*.md' -not -name 'xxx-*' | sort -r -u |
|
||||
while read file; do
|
||||
tags="$(sed -n '/---/,/---/p' "$file" |
|
||||
sed -n '1,/---/p' | sed '/^---$/d' |
|
||||
sed '/^$/,$d' |
|
||||
yq -r 'if ( .tags | type ) == "array" then .tags else [ .tags ] end | join("\n")' |
|
||||
tr 'A-Z' 'a-z' | tr ' ' '_'
|
||||
)"
|
||||
if echo "$tags" | grep -q "$tag"; then
|
||||
echo "$file" | cut -d '-' -f 2- | cut -d '.' -f 1
|
||||
fi
|
||||
done
|
||||
|
||||
fi
|
||||
|
7
bin/listTags
Executable file
7
bin/listTags
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
find content/blog/ -type f -name '*.md' -not -name 'xxx-*' | while read file; do
|
||||
sed -n '/---/,/---/p' "$file" | sed -n '1,/---/p' | sed '/^---$/d' | sed '/^$/,$d' | yq -r 'if ( .tags | type ) == "array" then .tags else [ .tags ] end | join("\n")' | while read tag; do
|
||||
echo "$tag" | tr ' ' '_'
|
||||
done
|
||||
done | sort -u
|
24
bin/rssIntro
Executable file
24
bin/rssIntro
Executable file
|
@ -0,0 +1,24 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
file="$1"
|
||||
|
||||
getBlogSlug(){
|
||||
echo "$1" | sed 's/^content\//\//' | sed 's/.md$/\//' | sed -E 's/[0-9]+-//'
|
||||
}
|
||||
|
||||
info="$(sed -n '/---/,/---/p' "$file" | sed '/^$/,$d' | sed -n '1,/---/p' | sed '/^---$/d')"
|
||||
|
||||
slug=$(getBlogSlug "$file")
|
||||
date="$(echo "$info" | yq -r .date)"
|
||||
rfc822="$(date --utc -d "$date" "+%a, %d %b %Y %H:%M:%S") UT"
|
||||
title="$(echo "$info" | yq -r .title)"
|
||||
description="$(echo "$info" | yq -r .description)"
|
||||
|
||||
echo "<item>
|
||||
<title>
|
||||
<![CDATA[$title]]></title>
|
||||
<link>https://jonathanh.co.uk$slug</link>
|
||||
<guid isPermaLink=\"true\">https://jonathanh.co.uk$slug</guid>
|
||||
<pubDate>$rfc822</pubDate>
|
||||
<description><![CDATA[$description]]></description>
|
||||
</item>"
|
231
build.sh
231
build.sh
|
@ -1,231 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
getBlogSlug(){
|
||||
echo "$1" | sed 's/^content\//\//' | sed 's/.md$/.html/' | sed -E 's/[0-9]+-//'
|
||||
}
|
||||
|
||||
blog(){
|
||||
echo "Generating Blog pages"
|
||||
[ ! -f "tmp/templates/tagList.html" ] && echo "No taglist file" | tee "tmp/templates/tagList.html" > /dev/stderr
|
||||
local newer=""
|
||||
[ -f tmp/lastBlogUpdate ] && newer="-newer tmp/lastBlogUpdate"
|
||||
find content/ -type f -name '*.md' $newer | while read file; do
|
||||
newFileName=$(getBlogSlug "$file")
|
||||
mkdir -p "public_html/${newFileName%/*}"
|
||||
mkdir -p "public_gemini/${newFileName%/*}"
|
||||
pandoc --template=templates/blog.html -f markdown -t html5 -M comments "$file" > "public_html/$newFileName"
|
||||
local info="$(sed -n '/---/,/---/p' "$file" | sed '/^$/,$d' | sed -n '1,/---/p' | sed '/^---$/d')"
|
||||
local title="$(echo "$info" | yq -r .title)"
|
||||
echo "# $title" | cat - "$file" | sed '/^---/,/^---/d' | md2gemini --link at-end > "public_gemini/${newFileName%.*}.gmi"
|
||||
done
|
||||
touch tmp/lastBlogUpdate
|
||||
}
|
||||
|
||||
makeIntro(){
|
||||
local file="$1"
|
||||
local output="tmp/intros/$file"
|
||||
local rssoutput="tmp/rss/$file"
|
||||
# We delete tmp each time the build script runs, so if the file exists, we have already generated one this time
|
||||
[ -f "$output" ] && return 1
|
||||
mkdir -p "${output%/*}"
|
||||
mkdir -p "${rssoutput%/*}"
|
||||
local info="$(sed -n '/---/,/---/p' "$file" | sed '/^$/,$d' | sed -n '1,/---/p' | sed '/^---$/d')"
|
||||
local slug=$(getBlogSlug "$file")
|
||||
local date="$(echo "$info" | yq -r .date)"
|
||||
local rfc822="$(date --utc -d "$date" "+%a, %d %b %Y %H:%M:%S") UT"
|
||||
local tags="$(echo "$info" | yq -r 'if ( .tags | type ) == "array" then .tags else [ .tags ] end | join("\n")' | awk '{print "<li>" $0 "</li>"}' )"
|
||||
local title="$(echo "$info" | yq -r .title)"
|
||||
local description="$(echo "$info" | yq -r .description)"
|
||||
echo "<article>
|
||||
<h2><a href='$slug'>$title</a></h2>
|
||||
<div class="article-details">
|
||||
<div class="date">
|
||||
$date
|
||||
</div>
|
||||
</div>
|
||||
<p>$description</p>
|
||||
<p><a href='$slug'>Read More</a></p>
|
||||
</article>" > "$output"
|
||||
echo "=> ${slug%.*}.gmi $title
|
||||
$date
|
||||
$description
|
||||
" > "${output%.*}.gmi"
|
||||
echo "<item>
|
||||
<title>
|
||||
<![CDATA[$title]]></title>
|
||||
<link>https://jonathanh.co.uk/$slug</link>
|
||||
<guid isPermaLink=\"true\">https://jonathanh.co.uk/$slug</guid>
|
||||
<pubDate>$rfc822</pubDate>
|
||||
<description><![CDATA[$description]]></description>
|
||||
</item>" > "$rssoutput"
|
||||
}
|
||||
|
||||
getIntro(){
|
||||
local file="$1"
|
||||
local output="tmp/intros/$file"
|
||||
|
||||
if [ "$2" = "rss" ]; then
|
||||
local output="tmp/rss/$file"
|
||||
fi
|
||||
|
||||
if [ "$2" = "gmi" ]; then
|
||||
local output="tmp/intros/${file%.*}.gmi"
|
||||
fi
|
||||
#makeIntro "$file"
|
||||
cat "$output"
|
||||
}
|
||||
|
||||
index(){
|
||||
echo "Generating Home Page"
|
||||
[ ! -f "tmp/templates/tagList.html" ] && echo "No taglist file" | tee "tmp/templates/tagList.html" > /dev/stderr
|
||||
local template="$(echo "" | pandoc --template=templates/blog.html -f markdown -t html5 -M frontpage 2> /dev/null )"
|
||||
|
||||
# First loop makes all the intros needed and stores them in tmp/intros
|
||||
find content/blog/ -type f -name '*.md' | grep -v 'xxx' | sort -r | head -n 20 | while read file; do
|
||||
makeIntro "$file"
|
||||
done
|
||||
|
||||
|
||||
# Once they are created, we will put them in, in order
|
||||
(
|
||||
echo "$template" | sed -n '1,/#CONTENT#/p' | head -n -1
|
||||
find content/blog/ -type f -name '*.md' | grep -v 'xxx' | sort -r | head -n 20 | while read file; do
|
||||
grep -Eq '^draft: true' "$file" || getIntro "$file"
|
||||
done
|
||||
echo "$template" | sed -n '/#CONTENT#/,$p' | sed '1d'
|
||||
) > public_html/index.html
|
||||
|
||||
# Once they are created, we will put them in, in order
|
||||
(
|
||||
echo "# Jonathan Hodgson"
|
||||
echo ""
|
||||
echo "## Blogs"
|
||||
echo ""
|
||||
find content/blog/ -type f -name '*.md' | grep -v 'xxx' | sort -r | head -n 20 | while read file; do
|
||||
grep -Eq '^draft: true' "$file" || getIntro "$file" gmi
|
||||
done
|
||||
echo ""
|
||||
echo "## Other Links"
|
||||
echo "=> /help-me-out.gmi Help Me Out"
|
||||
echo "=> /other-stuff-you-might-like.gmi Other Stuff You Might Like"
|
||||
|
||||
) > public_gemini/index.gmi
|
||||
}
|
||||
|
||||
tagIndex(){
|
||||
local tag="$1"
|
||||
local title="$(basename "$tag")"
|
||||
|
||||
[ ! -f "tmp/templates/tagList.html" ] && echo "No taglist file" | tee "tmp/templates/tagList.html" > /dev/stderr
|
||||
local template="$(echo "" | pandoc --template=templates/blog.html -f markdown -t html5 -M archive -M title:"$title Archive" 2> /dev/null )"
|
||||
|
||||
cat "$1" | grep -v 'xxx' | sort -r | while read file; do
|
||||
makeIntro "$file" &
|
||||
done
|
||||
wait
|
||||
|
||||
echo "$template" | sed -n '1,/#CONTENT#/p' | head -n -1
|
||||
cat "$1" | sort -r | while read file; do
|
||||
getIntro "$file"
|
||||
done
|
||||
echo "$template" | sed -n '/#CONTENT#/,$p' | sed '1d'
|
||||
}
|
||||
|
||||
|
||||
html_tag_list(){
|
||||
if [ -d "tmp/tag" ]; then
|
||||
echo "<ul class='taglist'>"
|
||||
wc -l tmp/tag/* | head -n -1 | sort -nr | while read line; do
|
||||
local link=$(echo "$line" | awk '{print $2 ".html"}' | sed 's/^tmp//' | tr '[A-Z]' '[a-z]' | tr ' ' '-')
|
||||
local name=$(echo "$line" | sed 's/tmp\/tag\///' | awk '{print $2 " (" $1 ")"}' | tr '_' ' ')
|
||||
echo "<li><a href='$link'>$name</a></li>"
|
||||
done
|
||||
echo "</ul>"
|
||||
else
|
||||
echo "Need to generate the taglist" > /dev/stderr
|
||||
fi
|
||||
}
|
||||
|
||||
tags(){
|
||||
|
||||
echo "Generating Tags"
|
||||
|
||||
# Loops through each blog and puts it in tag lists, although only blogs that have changed
|
||||
local newer=""
|
||||
[ -f tmp/lastTagUpdate ] && newer="-newer tmp/lastTagUpdate"
|
||||
find content/blog/ -type f -name '*.md' -not -name 'xxx-*' $newer | while read file; do
|
||||
sed -n '/---/,/---/p' "$file" | sed -n '1,/---/p' | sed '/^---$/d' | sed '/^$/,$d' | yq -r 'if ( .tags | type ) == "array" then .tags else [ .tags ] end | join("\n")' | while read tag; do
|
||||
tag=$(echo "$tag" | tr ' ' '_')
|
||||
# Adds the file to the tags list if it's not already in there
|
||||
grep -q "$file" tmp/tag/"$tag" 2> /dev/null || echo "$file" >> tmp/tag/"$tag"
|
||||
done
|
||||
done
|
||||
|
||||
echo "Generating Taglist HTML"
|
||||
html_tag_list > tmp/templates/tagList.html
|
||||
|
||||
# We should now have a folder with a text file for each tag containing each blog
|
||||
echo "Generating Tag Index Pages"
|
||||
|
||||
find tmp/tag/ -type f $newer | while read tag; do
|
||||
filename="$(echo $tag | sed 's/^tmp//' | tr '[A-Z]' '[a-z]').html"
|
||||
tagIndex "$tag" > "public_html/$filename"
|
||||
done
|
||||
|
||||
touch tmp/lastTagUpdate
|
||||
}
|
||||
|
||||
card(){
|
||||
echo "Generating Card"
|
||||
content/card.curl > public_html/card
|
||||
}
|
||||
|
||||
rss(){
|
||||
echo "Generating RSS Feed"
|
||||
lastUpdate="$(date --utc "+%a, %d %b %Y %H:%M:%S") UT"
|
||||
|
||||
# First loop makes all the intros needed and stores them in tmp/intros
|
||||
find content/blog/ -type f -name '*.md' | grep -v 'xxx' | sort -r | head -n 20 | while read file; do
|
||||
makeIntro "$file" &
|
||||
done
|
||||
wait
|
||||
|
||||
(
|
||||
echo "<?xml version='1.0' encoding='UTF-8' ?>
|
||||
<rss xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:atom=\"http://www.w3.org/2005/Atom\" version=\"2.0\">
|
||||
<channel>
|
||||
<title><![CDATA[Jonathan Hodgson]]></title>
|
||||
<description><![CDATA[Jonathan Hodgson's Blog]]></description>
|
||||
<link>https://jonathanh.co.uk</link>
|
||||
<lastBuildDate>$lastUpdate</lastBuildDate>"
|
||||
find content/blog/ -type f -name '*.md' | grep -v 'xxx' | sort -r | head -n 20 | while read file; do
|
||||
grep -Eq '^draft: true' "$file" || getIntro "$file" rss
|
||||
done
|
||||
echo "</channel></rss>";
|
||||
) > public_html/feed.rss
|
||||
}
|
||||
|
||||
|
||||
clean(){
|
||||
rm -rf tmp > /dev/null 2> /dev/null
|
||||
# Don't remove the public_html folder or docker won't re-attach it
|
||||
rm -rf public_html/*
|
||||
rm -rf public_gemini/*
|
||||
}
|
||||
|
||||
|
||||
# Make sure the folders we will need exist
|
||||
mkdir -p public_html/{blog,tag}
|
||||
mkdir -p public_gemini/{blog,tag}
|
||||
mkdir -p tmp/{tag,templates,intros}
|
||||
|
||||
|
||||
case "$1" in
|
||||
clean) clean ;;
|
||||
index) index ;;
|
||||
blog) blog ;;
|
||||
tags) tags ;;
|
||||
card) card ;;
|
||||
rss) rss ;;
|
||||
all) tags && blog && index && rss && card ;;
|
||||
esac
|
|
@ -65,13 +65,13 @@ $body$
|
|||
$endif$
|
||||
</a>
|
||||
<nav>
|
||||
${ ../tmp/templates/tagList.html() }
|
||||
${ ../tmp/templates/taglist.html() }
|
||||
</nav>
|
||||
</aside>
|
||||
</div>
|
||||
<footer>
|
||||
<a href="/help-me-out.html">Help Me Out</a>
|
||||
<a href="/other-stuff-you-might-like.html">Other Stuff You Might Like</a>
|
||||
<a href="/help-me-out/">Help Me Out</a>
|
||||
<a href="/other-stuff-you-might-like/">Other Stuff You Might Like</a>
|
||||
<a href="https://git.jonathanh.co.uk/jab2870/Website">Website Source</a>
|
||||
</footer>
|
||||
</body>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue