63 lines
1.8 KiB
Bash
Executable file
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."
|