Compare commits

1 Commits

Author SHA1 Message Date
kris 0ba0cdd92c Add mkzensical build wrapper script 2026-05-12 20:33:03 -04:00
+20 -7
View File
@@ -11,17 +11,30 @@ err() {
}
usage() {
printf 'usage: %s <zensical-semver> <repo-dir> [selinux-context]\n' "$prog" >&2
printf 'usage: %s [-z] <zensical_version> <repo_dir>\n' "$prog" >&2
}
if (($# != 2 && $# != 3)); then
selinux=0
while getopts ':z' opt; do
case $opt in
z)
selinux=1
;;
*)
usage
exit 1
;;
esac
done
shift $((OPTIND - 1))
if (($# != 2)); then
usage
exit 1
fi
tag=$1
dir=$2
label=$3
if [[ ! $tag =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
err "tag must be a version like 1.2.3 (got: $tag)"
@@ -44,12 +57,12 @@ git pull -q --ff-only || err "failed to update repo"
new=$(git rev-parse HEAD) || err "git rev-parse failed after pull at: $(pwd)"
if [[ $old != "$new" || ! -d site ]]; then
if ! docker run --rm -v "$PWD:/docs" "zensical/zensical:$tag" build; then
docker_opts=(run --rm)
[[ $selinux -eq 1 ]] && docker_opts+=(--security-opt label=level:s0)
docker_opts+=(-v "$PWD:/docs" "zensical/zensical:$tag" build)
if ! docker "${docker_opts[@]}"; then
err "build failed"
fi
fi
[[ -d site ]] || err "build did not produce site directory"
if [[ -n $label ]]; then
chcon -R -- "$label" site || err "failed to change SELinux context: $label"
fi