#!/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 print -Pnu2 "%B%F{201}" print -u2 "${@}" print -Pnu2 "%f%b" fi [[ -o INTERACTIVE ]] && return ${errorcode} exit ${errorcode}