chore(deploy): add simple build+rsync deploy script
Wraps the build-and-push routine (zola build → rsync to mycelium:~/public/praxis/) with --dry-run and --no-build flags. Anchored to repo root via $(dirname).
This commit is contained in:
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build the Zola site and sync `public/` to the Variomedia staging host.
|
||||
#
|
||||
# Usage:
|
||||
# scripts/deploy.sh # build + deploy
|
||||
# scripts/deploy.sh --dry-run # show what rsync would do, transfer nothing
|
||||
# scripts/deploy.sh --no-build # skip `zola build` (deploy existing public/)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REMOTE="mycelium:~/public/praxis/"
|
||||
LOCAL="public/"
|
||||
|
||||
# Run from the repo root so relative paths are stable.
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
DRY_RUN=""
|
||||
DO_BUILD=1
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--dry-run) DRY_RUN="--dry-run" ;;
|
||||
--no-build) DO_BUILD=0 ;;
|
||||
-h|--help)
|
||||
sed -n '2,8p' "$0"
|
||||
exit 0 ;;
|
||||
*)
|
||||
echo "unknown flag: $arg" >&2
|
||||
exit 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$DO_BUILD" -eq 1 ]]; then
|
||||
echo "==> zola build"
|
||||
zola build
|
||||
fi
|
||||
|
||||
if [[ ! -d "$LOCAL" ]]; then
|
||||
echo "error: $LOCAL does not exist — run without --no-build first" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> rsync $LOCAL -> $REMOTE${DRY_RUN:+ (dry-run)}"
|
||||
rsync -avz --delete $DRY_RUN "$LOCAL" "$REMOTE"
|
||||
|
||||
echo "==> done"
|
||||
Reference in New Issue
Block a user