113 lines
3.2 KiB
Makefile
113 lines
3.2 KiB
Makefile
# Build everything then deploy
|
|
default: site (docs "pdf") (docs "epub") (docs "txt") images deploy
|
|
|
|
# Deploy website
|
|
deploy:
|
|
# Deploying website ...
|
|
rsync -qavmzz public/ hel1:/var/www/secluded/
|
|
# Website deployed
|
|
|
|
# Build website
|
|
site:
|
|
# Building website ...
|
|
hugo --quiet
|
|
|
|
# Build documents of filetype ext
|
|
docs ext:
|
|
#!/usr/bin/env bash
|
|
|
|
echo -e '\033[1m# Checking whether there are new {{uppercase(ext)}}s to generate ...\033[0m'
|
|
|
|
export WEBROOT=public
|
|
|
|
published=$(grep -ilr --include \*.md "draft: false" content)
|
|
|
|
todo=""
|
|
|
|
# Iterate through all non-drafts
|
|
for path in $published
|
|
do
|
|
filename=$(basename "$path")
|
|
name=$(echo "${filename%.*}")
|
|
# Check whether target doc is newer than Markdown file
|
|
if [ "$path" -nt "public/$name/$name.{{ext}}" ]
|
|
then
|
|
todo+="$path "
|
|
fi
|
|
done
|
|
|
|
if [ -z "$todo" ]
|
|
then
|
|
echo "No {{uppercase(ext)}}s to generate"
|
|
exit 0
|
|
else
|
|
for path in $todo
|
|
do
|
|
filename=$(basename "$path")
|
|
name=$(echo "${filename%.*}")
|
|
echo "Generating $name.{{ext}}"
|
|
|
|
if [ "{{ext}}" == "pdf" ]
|
|
then
|
|
pandoc --quiet -f markdown -t pdf --lua-filter=pandoc_config/images.lua --pdf-engine=xelatex -V 'linkcolor:blue' --listings -H pandoc_config/styles.tex $path -o public/$name/$name.pdf
|
|
elif [ "{{ext}}" == "epub" ]
|
|
then
|
|
pandoc --quiet -f markdown -t epub3 --lua-filter=pandoc_config/images.lua --pdf-engine=xelatex -V 'linkcolor:blue' --listings -H pandoc_config/styles.tex $path -o public/$name/$name.epub
|
|
elif [ "{{ext}}" == "txt" ]
|
|
then
|
|
pandoc --quiet -f markdown -t plain --lua-filter=pandoc_config/images.lua $path -o public/$name/$name.txt
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Generate cover images
|
|
images:
|
|
#!/usr/bin/env bash
|
|
|
|
echo -e '\033[1m# Checking whether there are cover images to generate ...\033[0m'
|
|
|
|
published=$(grep -ilr --include \*.md "draft: false" content)
|
|
|
|
todo=""
|
|
|
|
# Iterate through all non-drafts
|
|
for path in $published
|
|
do
|
|
filename=$(basename "$path")
|
|
name=$(echo "${filename%.*}")
|
|
# Check whether target doc is newer than Markdown file
|
|
if [ "$path" -nt "public/$name/cover.png" ]
|
|
then
|
|
todo+="$path "
|
|
fi
|
|
done
|
|
|
|
if [ "content/_index.md" -nt "public/cover.png" ]
|
|
then
|
|
p2c -o public/cover.png -t "A Secluded Home" -s "Personal corner of the web for a musician, developer, sysadmin, podcaster, and small business owner"
|
|
fi
|
|
|
|
if [ -z "$todo" ]
|
|
then
|
|
echo "No covers to generate"
|
|
exit 0
|
|
else
|
|
for path in $todo
|
|
do
|
|
filename=$(basename "$path")
|
|
name=$(echo "${filename%.*}")
|
|
echo "Generating cover for $name"
|
|
|
|
p2c -i $path -o public/$name/cover.png
|
|
done
|
|
fi
|
|
|
|
# Generate feeds post from OPML file in /tmp/subscriptions.opml
|
|
opml:
|
|
go install git.sr.ht/~amolith/opml2md@latest
|
|
opml2md -i /tmp/subscriptions.opml -o content/feeds.md -x static/feeds.opml -t opml.tmpl -g "Software updates,Newsletters"
|
|
|
|
# Run development server
|
|
serve:
|
|
hugo server -D
|