diff --git a/main.sh b/main.sh index 2d5b6ef..b664745 100755 --- a/main.sh +++ b/main.sh @@ -753,12 +753,12 @@ schedule_next_transition() { render_dashboard() { local now_epoch="$1" - local columns width rule phase start_epoch stop_epoch record remaining banner + local columns content_width rule phase start_epoch stop_epoch record remaining banner local schedule_line ignored color_setup columns="$(terminal_columns)" - width=$((columns < 150 ? columns : 150)) + content_width=$((columns < 150 ? columns : 150)) if ((${#SCHEDULE[@]} == 0)); then render_empty "$columns" @@ -772,12 +772,12 @@ render_dashboard() { remaining=$((start_epoch - now_epoch)) fi banner="$(banner_duration "$remaining")" - rule="$(repeat_character '=' "$width")" + rule="$(repeat_character '=' "$columns")" printf '%s%s%s\n' "$CYAN" "$rule" "$RESET" printf '\n' printf '%s%s' "$BOLD" "$YELLOW" - print_large_countdown "$banner" "$width" + print_large_countdown "$banner" "$columns" printf '%s' "$RESET" printf '\n%s%s%s\n' "$CYAN" "$rule" "$RESET" printf '\n%sOUTAGE SCHEDULE (%d)%s\n\n' "$BOLD" "${#SCHEDULE[@]}" "$RESET" @@ -785,13 +785,13 @@ render_dashboard() { for schedule_line in "${SCHEDULE[@]}"; do IFS=$'\t' read -r ignored phase start_epoch stop_epoch record <<<"$schedule_line" render_event "$schedule_line" "$now_epoch" - printf '%s\n' "$DIM$(repeat_character '-' "$width")$RESET" + printf '%s\n' "$DIM$(repeat_character '-' "$columns")$RESET" done } main() { local now_epoch next_refresh=0 refresh_minutes=10 refresh_seconds state_ready=0 - local last_rendered=-1 next_transition=0 rebuild_schedule=0 frame key + local last_rendered=-1 next_transition=0 rebuild_schedule=0 frame key input_fd=0 while (($#)); do case "$1" in @@ -833,17 +833,23 @@ main() { STATE_PATH="$(mktemp "${TMPDIR:-/tmp}/blackout-state.XXXXXX")" DOWNLOAD_PATH="$(mktemp "${TMPDIR:-/tmp}/blackout-download.XXXXXX")" REFRESH_STATUS_PATH="$(mktemp "${TMPDIR:-/tmp}/blackout-refresh.XXXXXX")" + if [[ -r /dev/tty ]]; then + exec {input_fd}&2 exit 1 fi +WIDE_OUTPUT="$(NO_COLOR=1 COLUMNS=180 render_dashboard "$NOW_EPOCH")" +WIDE_TOP_LINE="${WIDE_OUTPUT%%$'\n'*}" +assert_equal "180" "${#WIDE_TOP_LINE}" \ + "the countdown divider should span the full terminal width" +WIDE_BOTTOM_LINE="${WIDE_OUTPUT##*$'\n'}" +assert_equal "180" "${#WIDE_BOTTOM_LINE}" \ + "the dashboard bottom divider should span the full terminal width" FUTURE_NOW="$(TZ=Asia/Tehran date -d '2026-07-18 15:00:00' +%s)" build_schedule "$FIXTURE" "$FUTURE_NOW"