#!/usr/bin/env bash
# Uses networkQuality, update terminal-widgets, output up/down speeds
set -e

LOGDIR="$HOME/logs"
LOGFILE="$LOGDIR/speed.csv"
mkdir -p "$LOGDIR"

widget_id_upload="upload"
widget_id_download="download"
chart_format="waveform"

NQ_OUT=$(networkQuality -s 2>&1)
STATUS=$?
if [[ $STATUS -ne 0 ]]; then
	echo "networkQuality failed: $NQ_OUT" >&2
	exit $STATUS
fi

DOWNLOAD=$(echo "$NQ_OUT" | awk -F: '/Downlink capacity/ {print int($2+0)}')
UPLOAD=$(echo "$NQ_OUT" | awk -F: '/Uplink capacity/ {print int($2+0)}')
TIMESTAMP=$(date -Iseconds)
echo "$TIMESTAMP,$DOWNLOAD,$UPLOAD" >>"$LOGFILE"
tmpfile=$(mktemp)
tail -n 100 "$LOGFILE" >"$tmpfile"
mv "$tmpfile" "$LOGFILE"

DOWN_VALS=($(tail -n 96 "$LOGFILE" | awk -F, '{print $2}'))
UP_VALS=($(tail -n 96 "$LOGFILE" | awk -F, '{print $3}'))
/opt/homebrew/bin/terminal-widget --base-zero --target ${widget_id_download} --text 'Download Speeds' --chart - --chart-format ${chart_format} --bg ffffff --fg 'rgb(237, 78, 195)' --text-color 222222 --caption --caption-color 888888 <<<"${DOWN_VALS[*]}" || true
/opt/homebrew/bin/terminal-widget --base-zero --target ${widget_id_upload} --text 'Upload Speeds' --chart - --chart-format ${chart_format} --bg ffffff --fg 'rgb(78, 155, 237)' --text-color 222222 --caption --caption-color 888888 <<<"${UP_VALS[*]}" || true

echo "⬇️ $DOWNLOAD"
echo "⬆️ $UPLOAD"
exit 0