#!/usr/bin/bash
set -eu

interval="${HEARTBEAT_INTERVAL:-15}"
case "$interval" in
  ''|*[!0-9]*)
    printf 'HEARTBEAT_INTERVAL must be a positive integer\n' >&2
    exit 2
    ;;
esac
if [ "$interval" -lt 1 ]; then
  printf 'HEARTBEAT_INTERVAL must be at least 1\n' >&2
  exit 2
fi

trap 'printf "heartbeat stopping\n"; exit 0' TERM INT
while :; do
  printf 'heartbeat time=%s interval=%s\n' "$(date --iso-8601=seconds)" "$interval"
  sleep "$interval" &
  wait "$!"
done
