#!/bin/sh

help="""
usage: timer [option] [args]
  options:
    -c SECONDS      Count down from given amount of seconds
    -s              Start stopwatch
    -h              Display this message
"""

max_seconds=86400

countdown() {
    start="$(( $(date '+%s') + $1))"
    while [ $start -ge $(date +%s) ]; do
        time="$(( $start - $(date +%s) ))"
        if [ $time -ge $max_seconds ]; then
            echo "Maximum number of seconds ($max_seconds) for countdown surpassed."
            exit
        fi
        printf '%s\r' "$(date -u -d "@$time" +%H:%M:%S)"
        sleep 0.1
    done
}

stopwatch() {
    start=$(date +%s)
    while true; do
        time="$(( $(date +%s) - $start))"
        printf '%s\r' "$(date -u -d "@$time" +%H:%M:%S)"
        if [ $time -ge $max_seconds ]; then
            echo "Maximum number of seconds ($max_seconds) reached."
            exit
        fi
        sleep 0.1
    done
}

no_args="true"
while getopts "c:sh" arg; do
  case $arg in
    c) countdown $OPTARG;;
    s) stopwatch;;
    h) echo "$help";;
    *) echo "$help";;
  esac
  no_args="false"
done

if [ "$no_args" = "true" ]; then
    echo "$help"
fi