1
0
Fork 0
dotfiles/.config/zsh/functions/die

25 lines
640 B
Bash
Executable File

#!/usr/bin/env zsh
# Exit with the error code of the last command and an optional error message in
# bold pink. The error code is overridden by the first argument, if it is a
# number. Will return instead of exit when the shell is interactive.
# Put this in ${fpath} and load it with `autoload -U die`.
local errorcode=${?}
setopt LOCAL_OPTIONS ERR_RETURN NO_UNSET PIPE_FAIL
if [[ -v 1 && ${1} =~ '^[0-9]+$' ]]; then
errorcode=${1}
shift
fi
if [[ -v 1 ]]; then
local colour="201"
print -Pnu2 "%B%F{${colour}}"
print -u2 "${@}"
print -Pnu2 "%f%b"
fi
[[ -o INTERACTIVE ]] && return ${errorcode}
exit ${errorcode}