- Update dbis_core, cross-chain-pmm-lps, explorer-monorepo, metamask-integration, pr-workspace/chains - Omit embedded publish git dirs and empty placeholders from index Made-with: Cursor
46 lines
1.4 KiB
Bash
Executable File
46 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Schedule NPMplus backup via cron (W1-8). Run from project root.
|
|
# Usage: bash scripts/maintenance/schedule-npmplus-backup-cron.sh [--install|--show]
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
INSTALL_ROOT="${CRON_PROJECT_ROOT:-$PROJECT_ROOT}"
|
|
BACKUP_SCRIPT="$INSTALL_ROOT/scripts/verify/backup-npmplus.sh"
|
|
LOG_DIR="$INSTALL_ROOT/logs"
|
|
CRON_LINE="0 3 * * * /usr/bin/flock -n /var/lock/npmplus-backup.lock bash -lc 'cd $INSTALL_ROOT && bash $BACKUP_SCRIPT >> $LOG_DIR/npmplus-backup.log 2>&1'"
|
|
|
|
validate_install_root() {
|
|
if [[ "$INSTALL_ROOT" == /tmp/* ]]; then
|
|
echo "Refusing to install cron from ephemeral path: $INSTALL_ROOT"
|
|
echo "Set CRON_PROJECT_ROOT to a persistent checkout on the host, then rerun."
|
|
exit 1
|
|
fi
|
|
if [[ ! -f "$BACKUP_SCRIPT" ]]; then
|
|
echo "Backup script not found at: $BACKUP_SCRIPT"
|
|
echo "Set CRON_PROJECT_ROOT to the host path that contains scripts/verify/backup-npmplus.sh."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
case "${1:-}" in
|
|
--install)
|
|
validate_install_root
|
|
mkdir -p "$LOG_DIR"
|
|
{
|
|
crontab -l 2>/dev/null | grep -v 'backup-npmplus.sh' || true
|
|
echo "$CRON_LINE"
|
|
} | crontab -
|
|
echo "Installed: $CRON_LINE"
|
|
;;
|
|
--show)
|
|
validate_install_root
|
|
echo "Crontab line: $CRON_LINE"
|
|
;;
|
|
*)
|
|
echo "Usage: $0 [--install|--show]"
|
|
exit 0
|
|
;;
|
|
esac
|