Ryan Cragun b5d32b7bec
enos: add shfmt formatting to enos module scripts (#28142)
Signed-off-by: Ryan Cragun <me@ryan.ec>
2024-08-23 13:45:30 -06:00

85 lines
2.2 KiB
Bash

#!/usr/bin/env bash
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
set -e
fail() {
echo "$1" 1>&2
exit 1
}
[[ -z "${PACKAGE_MANAGER}" ]] && fail "PACKAGE_MANAGER env variable has not been set"
[[ -z "${RETRY_INTERVAL}" ]] && fail "RETRY_INTERVAL env variable has not been set"
[[ -z "${TIMEOUT_SECONDS}" ]] && fail "TIMEOUT_SECONDS env variable has not been set"
# Add any repositories that have have been passed in
add_repos() {
# If we don't have any repos on the list for this distro, no action needed.
if [ ${#DISTRO_REPOS[@]} -lt 1 ]; then
echo "DISTRO_REPOS is empty; No repos required for the packages for this Linux distro."
return 0
fi
case $PACKAGE_MANAGER in
apt)
# NOTE: We do not currently add any apt repositories in our scenarios. I suspect if that time
# comes we'll need to add support for apt-key here.
for repo in ${DISTRO_REPOS}; do
if [ "$repo" == "__none" ]; then
continue
fi
sudo add-apt-repository "${repo}"
done
;;
dnf)
for repo in ${DISTRO_REPOS}; do
if [ "$repo" == "__none" ]; then
continue
fi
sudo dnf install -y "${repo}"
sudo dnf makecache -y
done
;;
yum)
for repo in ${DISTRO_REPOS}; do
if [ "$repo" == "__none" ]; then
continue
fi
sudo yum install -y "${repo}"
sudo yum makecache -y
done
;;
zypper)
# Add each repo
for repo in ${DISTRO_REPOS}; do
if [ "$repo" == "__none" ]; then
continue
fi
if sudo zypper lr "${repo}"; then
echo "A repo named ${repo} already exists, skipping..."
continue
fi
sudo zypper --gpg-auto-import-keys --non-interactive addrepo "${repo}"
done
sudo zypper --gpg-auto-import-keys ref
sudo zypper --gpg-auto-import-keys refs
;;
*)
fail "Unsupported package manager: ${PACKAGE_MANAGER}"
;;
esac
}
begin_time=$(date +%s)
end_time=$((begin_time + TIMEOUT_SECONDS))
while [ "$(date +%s)" -lt "$end_time" ]; do
if add_repos; then
exit 0
fi
sleep "$RETRY_INTERVAL"
done
fail "Timed out waiting for distro repos to be set up"