devsofttech_hms_ci4/scripts/install_hms_cron.sh

52 lines
2.2 KiB
Bash

#!/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" <<EOF
$BLOCK_START
* * * * * cd $PROJECT_DIR && $PHP_BIN spark abdm:push-sync --limit=20 --worker=cron-abdm-m2 >> $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'