summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2021-05-16 11:17:11 +0200
committerPatrick Spek <p.spek@tyil.nl>2021-05-16 11:17:11 +0200
commit6fe4c87acf56ec4052d92e26ab39e5f59af4853a (patch)
tree0bd7f9a190898a12d251ded5d6cda100e0eeb11d
parent5469a98dae630fcd2a7e5adc320a37862dc8f1a7 (diff)
Add script for easy publishing of the site
-rwxr-xr-xbin/publish75
1 files changed, 75 insertions, 0 deletions
diff --git a/bin/publish b/bin/publish
new file mode 100755
index 0000000..e53541e
--- /dev/null
+++ b/bin/publish
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+# This program is free software: you can redistribute it and/or modify it under
+# the terms of the GNU Affero General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option) any
+# later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+# details.
+
+readonly BASEDIR="$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P)"
+
+main()
+{
+ # Handle opts
+ while getopts ":h" opt
+ do
+ case "$opt" in
+ h) usage && exit 0 ;;
+ *)
+ printf "Invalid option passed: %s\n" "$OPTARG" >&2
+ ;;
+ esac
+ done
+
+ shift $(( OPTIND - 1 ))
+
+ if [ $# -lt 1 ]
+ then
+ printf "Must specify a directory to publish the site at\n"
+ exit 3
+ fi
+
+ output=$1
+
+ # Ensure output directory exists
+ if [ ! -d "$output" ]
+ then
+ printf "No such directory: %s\n" "$output"
+ exit 4
+ fi
+
+ # Make ZFS snapshot
+ if awk '$3 == "zfs" { print $2 }' < /proc/mounts | grep -q "$output"
+ then
+ zfs_subvol="$(zfs list -o name,mountpoint | awk '$2 == "'"$output"'" { print $1 }')"
+ zfs_snapshot="$zfs_subvol@$(date +%FT%T)"
+
+ printf "Creating ZFS snapshot %s\n" "$zfs_snapshot"
+
+ sudo zfs snapshot "$zfs_snapshot"
+ fi
+
+ # Publish new site source
+ cd -- "$BASEDIR/src"
+ bundle install
+ bundle exec jekyll build -d "$output"
+}
+
+usage()
+{
+ cat <<EOF
+Usage:
+ ${0##*/} -h
+
+Nondescript
+
+Options:
+ -h Show this help text and exit.
+EOF
+}
+
+main "$@"