blob: a4180bd8a0a285c3852b13b60ad9a4fa0d64b480 [file] [log] [blame]
#!/usr/bin/env bash
# Provides an "atexit" mechanism for scripts.
# Array of commands to eval.
declare -a __atexit_cmds
# Helper for eval'ing commands.
__atexit() {
for cmd in "${__atexit_cmds[@]}"; do
eval ${cmd}
done
}
# Usage: atexit command arg1 arg2 arg3
atexit() {
# Determine the current number of commands.
local length=${#__atexit_cmds[*]}
# Add this command to the end.
__atexit_cmds[${length}]="${*}"
# Set the trap handler if this was the first command added.
if [[ ${length} -eq 0 ]]; then
trap __atexit EXIT
fi
}