Initial import
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Configuration from environment variables
|
||||
VAULT_REPO="${VAULT_REPO:-}"
|
||||
VAULT_BRANCH="${VAULT_BRANCH:-main}"
|
||||
SYNC_INTERVAL="${SYNC_INTERVAL:-30}"
|
||||
CONTENT_DIR="/usr/src/app/content"
|
||||
|
||||
# Logging function
|
||||
log() {
|
||||
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
|
||||
}
|
||||
|
||||
# Initialize vault content
|
||||
init_vault() {
|
||||
log "Initializing vault from $VAULT_REPO (branch: $VAULT_BRANCH)"
|
||||
|
||||
if [ -z "$VAULT_REPO" ]; then
|
||||
log "ERROR: VAULT_REPO not set. Using pre-existing content."
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Remove existing content if it exists and is a git repo
|
||||
if [ -d "$CONTENT_DIR/.git" ]; then
|
||||
log "Content directory is a git repo, pulling latest changes..."
|
||||
cd "$CONTENT_DIR"
|
||||
git fetch origin "$VAULT_BRANCH"
|
||||
git reset --hard "origin/$VAULT_BRANCH"
|
||||
cd /usr/src/app
|
||||
else
|
||||
log "Content directory is not a git repo, cloning..."
|
||||
rm -rf "$CONTENT_DIR"
|
||||
git clone --depth 1 --branch "$VAULT_BRANCH" "$VAULT_REPO" "$CONTENT_DIR"
|
||||
fi
|
||||
|
||||
log "Vault synchronized successfully"
|
||||
}
|
||||
|
||||
# Sync vault periodically in background
|
||||
sync_vault_loop() {
|
||||
while true; do
|
||||
sleep "$SYNC_INTERVAL"
|
||||
log "Checking for vault updates..."
|
||||
|
||||
if [ -d "$CONTENT_DIR/.git" ]; then
|
||||
cd "$CONTENT_DIR"
|
||||
# Check if there are remote changes
|
||||
git fetch origin "$VAULT_BRANCH" 2>/dev/null || continue
|
||||
|
||||
LOCAL=$(git rev-parse HEAD)
|
||||
REMOTE=$(git rev-parse "origin/$VAULT_BRANCH")
|
||||
|
||||
if [ "$LOCAL" != "$REMOTE" ]; then
|
||||
log "Vault changes detected, pulling..."
|
||||
git reset --hard "origin/$VAULT_BRANCH"
|
||||
log "Vault updated. Note: Quartz build may need restart for changes to appear."
|
||||
else
|
||||
log "Vault is up to date"
|
||||
fi
|
||||
cd /usr/src/app
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Initialize once on startup
|
||||
init_vault
|
||||
|
||||
# Start sync loop in background
|
||||
sync_vault_loop &
|
||||
SYNC_PID=$!
|
||||
|
||||
log "Starting Quartz..."
|
||||
# Run Quartz with proper signal handling
|
||||
trap "kill $SYNC_PID 2>/dev/null || true" EXIT TERM INT
|
||||
exec npx quartz build --serve
|
||||
|
||||
Reference in New Issue
Block a user