bash error handling and reporting is atrocious. Without -e it will just ignore errors. With -e it will stop on errors, but not report where the error happened (apart from exiting itself with an error code). Improve that with the `trap ERR` command. Note that this won't be invoked on intentional error exit with `exit 1`. We apply this on every bash script that contains -e or that it appears trivial to set it in. Non-trivial scripts without -e are left unmodified, since they might intentionally invoke failing scripts. Closes scylladb/scylladb#22747
43 lines
1014 B
Bash
Executable File
43 lines
1014 B
Bash
Executable File
#!/bin/bash -e
|
|
#
|
|
# Copyright (C) 2017-present ScyllaDB
|
|
|
|
#
|
|
# SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
|
|
|
|
trap 'echo "error $? in $0 line $LINENO"' ERR
|
|
|
|
print_usage() {
|
|
echo "scylla_offline_installer.sh -- --skip-setup"
|
|
echo " --skip-setup skip running scylla_setup"
|
|
exit 1
|
|
}
|
|
|
|
SKIP_SETUP=0
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
"--skip-setup")
|
|
SKIP_SETUP=1
|
|
shift 1
|
|
;;
|
|
*)
|
|
print_usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo "Install Scylla offline package..."
|
|
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo "Error: root user required"
|
|
exit 1
|
|
fi
|
|
|
|
dpkg -i -G -E debs/python-minimal*.deb debs/python2.7-minimal*.deb debs/libpython2.7-minimal*.deb debs/python3-minimal*.deb debs/python3.*-minimal*.deb debs/libpython3.*-minimal*.deb debs/libssl1.0.0*.deb debs/libexpat1*.deb
|
|
dpkg -i -G -E -R debs
|
|
if [ $SKIP_SETUP -eq 0 ]; then
|
|
/opt/scylladb/scripts/scylla_setup
|
|
fi
|
|
|
|
echo "Scylla offline package installation finished."
|