SOURCE_FILE=$_
set -ueEo pipefail
# lineno[, msg]
function die() {
local line=$1
local msg=${2:-command failed}
local supplemental=${3:-}
>&2 echo "[ERROR] $SOURCE_FILE:$1 $msg"
if [ ! -z "$supplemental" ]; then
echo "$supplemental" | >&2 sed 's|^| |g'
fi
exit 1
}
trap 'die $LINENO' ERR