commit b31dafc83d349ab04b8afb210ad1f020c92ae32e Author: Juraj Oravec Date: Wed Nov 27 23:13:47 2024 +0100 Add build script for my blog Signed-off-by: Juraj Oravec diff --git a/blog.sgorava.xyz.sh b/blog.sgorava.xyz.sh new file mode 100755 index 0000000..33219f7 --- /dev/null +++ b/blog.sgorava.xyz.sh @@ -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"