Files
Francesco Canovai af540b2c7d ci: stop on errors in subshells (#173)
Define a trap that subshells can inherit through "set -E".

Closes #172

Signed-off-by: Francesco Canovai <francesco.canovai@enterprisedb.com>
2025-04-28 13:08:38 +02:00

107 lines
2.2 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
#
# Copyright The CloudNativePG Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
set -Eeuo pipefail
error_trap() {
local exit_code=$?
local line_number=$LINENO
local script_name=$(basename "$0")
local func_name=${FUNCNAME[1]:-MAIN}
echo "❌ ERROR in $script_name at line $line_number"
echo " Function: $func_name"
echo " Command: '$BASH_COMMAND'"
echo " Exit code: $exit_code"
exit $exit_code
}
trap error_trap ERR
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
LIBDIR="$(pwd)/../lib"
source "$LIBDIR/repo_funcs.sh"
# Defaults
DISTRO=""
usage(){
echo "Fetch new updates of the CNPG container images."
echo "Usage: $(basename "$0") [options]"
echo "Options"
echo " -d, --distro the distro to update"
echo " -h, --help display this message end exit"
}
OPTS=$(getopt \
--long help,distro: \
-n "$(basename "$0")" \
-o hd: \
-- "$@")
eval set -- "$OPTS"
while [[ $# -gt 0 ]]; do
case "$1" in
-h|--help)
usage
exit 0
;;
-d|--distro)
DISTRO=$2
if ! [[ "$DISTRO" =~ (bullseye|bookworm) ]]; then
echo "The supported distributions are: bullseye, bookworm"
exit 1
fi
shift 2
;;
--)
shift
break
;;
*)
echo "Unrecognized parameter $1"
usage
exit 1
;;
esac
done
versions=("$@")
if [ ${#versions[@]} -eq 0 ]; then
for version in */; do
versions+=("$version")
done
fi
versions=("${versions[@]%/}")
requirements=$(update_requirements)
case "$DISTRO" in
bullseye|bookworm)
for version in "${versions[@]}"; do
generate_postgres "${version}" "${DISTRO}" "${requirements}"
done
;;
*)
for version in "${versions[@]}"; do
generate_postgres "${version}" "bullseye" "${requirements}"
generate_postgres "${version}" "bookworm" "${requirements}"
done
;;
esac