diff --git a/sunset-alarm b/sunset-alarm index ffcd222..a54356b 100755 --- a/sunset-alarm +++ b/sunset-alarm @@ -18,7 +18,27 @@ PROMPT="sunset-alarm" # Usage ############################################################################### usage() { - echo "Usage: sunset-alarm (-l LAT:LONG | -t HH24:MI) (-m MINUTES) [-h]" >&2 + cat <&2 usage @@ -56,12 +81,15 @@ fi # Internet connectivity check ############################################################################### check_internet() { - if curl -s --max-time 5 -o /dev/null https://hyperling,com; then + if curl -s --max-time 5 -o /dev/null https://hyperling.com; then + echo "Confirmed connectivity with Hyperling." return 0 fi if curl -s --max-time 5 -o /dev/null https://mullvad.net; then + echo "Confirmed connectivity with Mullvad." return 0 fi + echo "ERROR: Connectivity checks failed." >&2 return 1 } @@ -69,12 +97,15 @@ check_internet() { # Get sunset from Open Meteo API ############################################################################### fetch_sunset_time() { + echo "Checking for sunset time of lat:long ${LATLONG}." LAT=$(echo "$LATLONG" | cut -d: -f1) LON=$(echo "$LATLONG" | cut -d: -f2) - RESPONSE=$(curl -s "https://api.open-meteo.com/v1/forecast?latitude=${LAT}&longitude=${LON}&timezone=auto&daily=sunset&date=today") + REQUEST="https://api.open-meteo.com/v1/forecast?latitude=${LAT}&longitude=${LON}&timezone=auto&daily=sunset&date=today" + RESPONSE=$(curl -s "$REQUEST") if [ -z "$RESPONSE" ]; then + echo "ERROR: Did not receive response. $REQUEST" >&2 return 1 fi @@ -82,6 +113,7 @@ fetch_sunset_time() { SUNSET_RAW=$(echo "$RESPONSE" | jq -r '.daily.sunset[0]') if [ -z "$SUNSET_RAW" ]; then + echo "ERROR: Could not parse time. $RESPONSE" >&2 return 1 fi @@ -89,9 +121,11 @@ fetch_sunset_time() { SUNSET_EPOCH=$(date -d "$(echo "$SUNSET_RAW" | cut -dT -f1) $(echo "$SUNSET_RAW" | cut -dT -f2)" +%s 2>/dev/null) if [ -z "$SUNSET_EPOCH" ]; then + echo "ERROR: Could not calculate epoch. $SUNSET_RAW" >&2 return 1 fi + echo "Got ${SUNSET_RAW} and converted it to epoch ${SUNSET_EPOCH}." return 0 } @@ -136,13 +170,13 @@ while true; do if [ -n "$LATLONG" ]; then # Need internet to get sunset time if ! check_internet; then - echo "No internet connection. Retrying in 5 minutes..." >&2 + echo "No internet connection. Retrying in 5 minutes." >&2 sleep 300 continue fi fetch_sunset_time || { - echo "Error fetching sunset time. Retrying in 5 minutes..." >&2 + echo "Failed fetching sunset time. Retrying in 5 minutes." >&2 sleep 300 continue } @@ -167,8 +201,11 @@ while true; do # Alert while current time is within the window (from window start until midnight) if [ "$CURRENT_TIME" -ge "$ALERT_WINDOW_START" ] && \ [ "$CURRENT_TIME" -lt "$MIDNIGHT" ]; then + echo "Alert time has been reached, show message." show_alert + echo "Alert has been dismissed, sleeping for 5 minutes." sleep 290 + echo "Waking back up from notification dismissal." fi # Reset when we've passed midnight so we fetch new time tomorrow