#!/usr/bin/env bash

function usage {
	echo "countdown - exit after a certain amount of time has passed"
	echo "  Usage:"
	echo "    countdown <SECONDS> && command..."
	echo
	echo "  Examples:"
	echo '    countdown 120 && echo "Two minutes has elapsed!"'
}

[[ $# -lt 1 ]] && { printf "error: no SECONDS argument provided\n" >&2; usage; exit 1; }

d=$(($(date +%s) + $1));
printf 'Started at %s\n' "$(date)"

while [[ "$d" -ge "$(date +%s)" ]]; do
	_dt=$((d - $(date +%s)))
	days=$((_dt / 86400))
	printf "\r%sd %s " "$days" "$(date -u --date @$((_dt)) +%H:%M:%S)";
	sleep 0.1
done

printf "\rCountdown finished %s\n" "$(date)"