Add build script for my blog

Signed-off-by: Juraj Oravec <jurajoravec@mailo.com>
This commit is contained in:
Juraj Oravec 2024-11-27 23:13:47 +01:00
commit b31dafc83d
Signed by: SGOrava
GPG Key ID: 13660A3F1D9F093B

62
blog.sgorava.xyz.sh Executable file
View File

@ -0,0 +1,62 @@
#!/bin/sh
# Quick and dirty way to build the site
# Script configuration
BUILD_DIR="/tmp/site_builder"
TARGET_DIR="/srv/http"
SITE_DIR="blog.sgorava.xyz"
REPOSITORY_URL="https://git.sgorava.xyz/Websites/blog.sgorava.xyz.git"
# Helper functions
function fail {
printf '%s\n' "$1" >&2 ## Send message to stderr.
exit "${2-1}" ## Return a code specified by $2, or 1 by default.
}
# Prepare - Clean and Create temporary directory
printf "=== Phase: Prepare ===\n"
# Check if variables are set.
if [ ${BUILD_DIR:+1} ] && [ ${TARGET_DIR:+1} ] && [ ${SITE_DIR:+1} ] && [ ${REPOSITORY_URL:+1} ]
then
# Prepare build directory
rm -rfv "${BUILD_DIR}/${SITE_DIR}" || fail "Unable to delete build directory."
mkdir -pv "${BUILD_DIR}" || fail "Unable to create build directory."
# Prepare target directory
mkdir -pv "${TARGET_DIR}/${SITE_DIR}" || fail "Unable to create target directory."
else
printf "One of the configuration variables is not set.\n\n"
printf "BUILD_DIR=\"%s\"\n" "${BUILD_DIR}"
printf "TARGET_DIR=\"%s\"\n" "${TARGET_DIR}"
printf "SITE_DIR=\"%s\"\n" "${SITE_DIR}"
printf "REPOSITORY_URL=\"%s\"\n" "${REPOSITORY_URL}"
exit 1
fi
# Clone the repository
printf "=== Phase: Clone ===\n"
cd "${BUILD_DIR}" || fail "Unable to change to the build directory."
git clone "${REPOSITORY_URL}" "${SITE_DIR}" || fail "Unable to clone the repository."
# Build
printf "=== Phase: Build ===\n"
cd "${SITE_DIR}" || fail "Unable to change to the repository directory."
printf "=== Run Openring ===\n"
openring -S openring/openring.txt < openring/openring.html > layouts/partials/openring.html || fail "Unable to generate Openring data."
printf "=== Run hugo ===\n"
hugo --cleanDestinationDir --noChmod --buildFuture
# Sync
printf "=== Phase: Sync ===\n"
rsync -avz --delete "public/" "${TARGET_DIR}/${SITE_DIR}/" || fail "Unable to sync with target directory."
# Clean the vuild directory
rm -rf "${BUILD_DIR}/${SITE_DIR}" && printf "=== Done ===\n"