foxshell/fn/-z4h-cmd-tty-wait
2025-07-04 11:48:40 -05:00

32 lines
683 B
Bash

#!/usr/bin/env zsh
eval "$_z4h_opt"
local -a timeout pattern
zparseopts -D -F -- \
{t,-timeout-seconds}:=timeout \
{p,-lines-columns-pattern}:=pattern \
|| return '_z4h_err()'
if (( $#pattern == 2 )); then
pattern=$pattern[2]
else
return '_z4h_err()'
fi
if (( $#timeout == 2 )); then
[[ $timeout[2] == <->(|.<->) ]] || return '_z4h_err()'
typeset -F timeout=$timeout[2]
else
return '_z4h_err()'
fi
[[ $TERM == (screen|tmux)* ]] && return 0
[[ -v commands[true] ]] || return 0
local -F deadline='EPOCHREALTIME + timeout'
while [[ "$LINES $COLUMNS" != $~pattern ]] && (( EPOCHREALTIME < deadline )); do
command true
done
return 0