shifting away from invoking via curl and using a downloaded zip file or git clone.
54 lines
1.8 KiB
Bash
54 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
# Standard strict mode and error handling/tracing boilderplate..
|
|
|
|
# This is a function I include and execute in every shell script that I write.
|
|
# It sets up a bunch of error handling odds and ends
|
|
|
|
# Bits and pieces Sourced from (as best I recall):
|
|
# * https://news.ycombinator.com/item?id=24727495
|
|
# * many other hacker news / slashdot etc posts over the years
|
|
# * https://www.tothenew.com/blog/foolproof-your-bash-script-some-best-practices/
|
|
# * https://translucentcomputing.com/2020/05/unofficial-bash-strict-mode-errexit/
|
|
# * http://redsymbol.net/articles/unofficial-bash-strict-mode/
|
|
# * the school of hard knocks... (aka my code failures...)
|
|
|
|
#Here's the beef (as the commercial says..)
|
|
|
|
export PS4='(${BASH_SOURCE}:${LINENO}): - [${SHLVL},${BASH_SUBSHELL},$?] $ '
|
|
|
|
function error_out()
|
|
{
|
|
echo "Bailing out. See above for reason...."
|
|
exit 1
|
|
}
|
|
|
|
function handle_failure() {
|
|
local lineno=$1
|
|
local fn=$2
|
|
local exitstatus=$3
|
|
local msg=$4
|
|
local lineno_fns=${0% 0}
|
|
if [[ "$lineno_fns" != "-1" ]] ; then
|
|
lineno="${lineno} ${lineno_fns}"
|
|
fi
|
|
echo "${BASH_SOURCE[0]}: Function: ${fn} Line Number : [${lineno}] Failed with status ${exitstatus}: $msg"
|
|
}
|
|
|
|
trap 'handle_failure "${BASH_LINENO[*]}" "$LINENO" "${FUNCNAME[*]:-script}" "$?" "$BASH_COMMAND"' ERR
|
|
|
|
#use errexit (a.k.a. set -e) to make your script exit when a command fails.
|
|
#add || true to commands that you allow to fail.
|
|
set -o errexit
|
|
|
|
# Use set -o nounset (a.k.a. set -u) to exit when your script tries to use undeclared
|
|
# variables.
|
|
set -o nounset
|
|
|
|
#Use set -o pipefail in scripts to catch (for example) mysqldump fails
|
|
#in e.g. mysqldump |gzip.
|
|
#The exit status of the last command that threw a non-zero exit code is returned
|
|
set -o pipefail
|
|
|
|
#Function tracing...
|
|
set -o functrace |