#!/usr/bin/env bash set -euo pipefail PROJECT_DIR="${1:-/var/www/html/hms_etria}" # Default PHP_BIN prefers the app-compatible `php83` CLI over the bare `php` # alias, since on some servers (e.g. CloudLinux/cPanel-style alt-php setups) # plain `php` resolves to an older, incompatible PHP version that fails to # even parse `spark` (composer.json requires PHP ^8.2). Override via the # PHP_BIN env var if your server uses a different binary name/path. PHP_BIN="${PHP_BIN:-$(command -v php83 || command -v php)}" LOG_DIR="${PROJECT_DIR}/writable/logs/cron" BLOCK_START="# BEGIN HMS_CI4_AUTOGENERATED_CRON" BLOCK_END="# END HMS_CI4_AUTOGENERATED_CRON" if [ ! -d "$PROJECT_DIR" ]; then echo "ERROR: Project directory not found: $PROJECT_DIR" exit 1 fi mkdir -p "$LOG_DIR" TMP_CRON="$(mktemp)" trap 'rm -f "$TMP_CRON"' EXIT # Keep existing non-HMS cron entries, replace only this managed block. crontab -l 2>/dev/null | awk -v start="$BLOCK_START" -v end="$BLOCK_END" ' $0 == start {in_block=1; next} $0 == end {in_block=0; next} !in_block {print} ' > "$TMP_CRON" cat >> "$TMP_CRON" <> $LOG_DIR/abdm_push_sync.log 2>&1 * * * * * cd $PROJECT_DIR && $PHP_BIN spark abdm:taskboard-sync --limit=20 >> $LOG_DIR/abdm_taskboard_sync.log 2>&1 * * * * * cd $PROJECT_DIR && $PHP_BIN spark abdm:sms-notify --limit=20 >> $LOG_DIR/abdm_sms_notify.log 2>&1 * * * * * cd $PROJECT_DIR && $PHP_BIN spark bridge:sync --limit 10 >> $LOG_DIR/bridge_sync.log 2>&1 * * * * * cd $PROJECT_DIR && $PHP_BIN spark snomed:process-coding >> $LOG_DIR/snomed_process.log 2>&1 */2 * * * * cd $PROJECT_DIR && $PHP_BIN spark abdm:hiu-poll --limit=15 >> $LOG_DIR/abdm_hiu_poll.log 2>&1 */5 * * * * cd $PROJECT_DIR && $PHP_BIN spark abdm:hiu-retry --limit=20 >> $LOG_DIR/abdm_hiu_retry.log 2>&1 30 2 * * * cd $PROJECT_DIR && $PHP_BIN spark abdm:prune-logs --days=30 --strip-payload-days=2 --optimize >> $LOG_DIR/abdm_prune_logs.log 2>&1 $BLOCK_END EOF crontab "$TMP_CRON" echo "Installed HMS cron jobs for project: $PROJECT_DIR" echo "Managed block markers: $BLOCK_START ... $BLOCK_END" crontab -l | sed -n '/^# BEGIN HMS_CI4_AUTOGENERATED_CRON$/,/^# END HMS_CI4_AUTOGENERATED_CRON$/p'