32 lines
683 B
Bash
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
|