genlog/genlog.sh

63 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env bash
# some useful things
# https://sharats.me/posts/shell-script-best-practices/
set -o errexit
set -o pipefail
# creating a temporary directory for our working stuff
tempdir="$(mktemp -d)"
# checking args
if [[ -n "$1" ]]
then
# if there's an arg, using it as a working path
source_path="$1"
else
# if not, using the 'content' directory as working path
source_path=content
fi
# get the current date for the footer (UTC and ISO 8601 with hours and minutes)
date=$(date -u --iso-8601=minutes)
sed "s/GEN_DATE/$date/" html/footer.html > "$tempdir/footer.html"
# finding recursively all ".gmi" files on the working path
find "$source_path" -wholename "*.gmi" -type f | while read -r gmi_file
do
# deleting the '#' of the first line and save it as title
title="$(sed -n '1{s/# //p}' "$gmi_file") $2"
# in the header.html, replacing the "<\-- TITLE -->" by the previously
# saved title, and save the modified file in our temporary directory
sed "s#<\!-- TITLE -->#$title#" html/header.html > "$tempdir/header.html"
# convertig .gmi files in .html
/usr/local/bin/gmnitohtml < "$gmi_file" > "$tempdir/body.html"
# retrieving of the path of the current .gmi file
file_path="$(dirname "$gmi_file")"
# retrieving of the filename of the current .gmi file, without its extension
file_name="$(basename "$gmi_file" .gmi)"
# assembling the header, the converted page and the footer and saving it in the working path
cat "$tempdir/header.html" "$tempdir/body.html" "$tempdir/footer.html" > "$file_path/$file_name.html"
# i think it's all good
echo "OK: $title"
echo "$file_path/$file_name.html"
done
# removing the temporary directory, it's useless now
rm -r "$tempdir"
# this time it's really the end
echo "All done."