Merge fetch functions into single function with optional dest parameter
Address review feedback: - Combine fetch_stdout() and fetch() into single fetch() function - fetch <url> outputs to stdout, fetch <url> <dest> writes to file - HTTP client detection is cached and reused for both cases - Fixes issue where curl was used explicitly for API calls but fetch() function supported wget/busybox
This commit is contained in:
parent
e1f4a9a355
commit
9115d27ca7
@ -6,18 +6,38 @@ VAULT_TOKEN=${VAULT_TOKEN}
|
|||||||
INSTALL_DIR=${INSTALL_DIR}
|
INSTALL_DIR=${INSTALL_DIR}
|
||||||
VAULT_CLI_VERSION=${VAULT_CLI_VERSION}
|
VAULT_CLI_VERSION=${VAULT_CLI_VERSION}
|
||||||
|
|
||||||
|
# Fetch URL content. If dest is provided, write to file; otherwise output to stdout.
|
||||||
|
# Usage: fetch <url> [dest]
|
||||||
fetch() {
|
fetch() {
|
||||||
dest="$1"
|
url="$1"
|
||||||
url="$2"
|
dest="$${2:-}"
|
||||||
if command -v curl > /dev/null 2>&1; then
|
|
||||||
curl -sSL --fail "$${url}" -o "$${dest}"
|
# Detect HTTP client on first run
|
||||||
elif command -v wget > /dev/null 2>&1; then
|
if [ -z "$${HTTP_CLIENT:-}" ]; then
|
||||||
wget -O "$${dest}" "$${url}"
|
if command -v curl > /dev/null 2>&1; then
|
||||||
elif command -v busybox > /dev/null 2>&1; then
|
HTTP_CLIENT="curl"
|
||||||
busybox wget -O "$${dest}" "$${url}"
|
elif command -v wget > /dev/null 2>&1; then
|
||||||
|
HTTP_CLIENT="wget"
|
||||||
|
elif command -v busybox > /dev/null 2>&1; then
|
||||||
|
HTTP_CLIENT="busybox"
|
||||||
|
else
|
||||||
|
printf "curl, wget, or busybox is not installed. Please install curl or wget in your image.\n"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$${dest}" ]; then
|
||||||
|
case "$${HTTP_CLIENT}" in
|
||||||
|
curl) curl -sSL --fail "$${url}" -o "$${dest}" ;;
|
||||||
|
wget) wget -O "$${dest}" "$${url}" ;;
|
||||||
|
busybox) busybox wget -O "$${dest}" "$${url}" ;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
printf "curl, wget, or busybox is not installed. Please install curl or wget in your image.\n"
|
case "$${HTTP_CLIENT}" in
|
||||||
return 1
|
curl) curl -sSL --fail "$${url}" ;;
|
||||||
|
wget) wget -qO- "$${url}" ;;
|
||||||
|
busybox) busybox wget -qO- "$${url}" ;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +78,7 @@ install() {
|
|||||||
API_URL="https://api.releases.hashicorp.com/v1/releases/vault/$${VAULT_CLI_VERSION}"
|
API_URL="https://api.releases.hashicorp.com/v1/releases/vault/$${VAULT_CLI_VERSION}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
API_RESPONSE=$(curl -s "$${API_URL}")
|
API_RESPONSE=$(fetch "$${API_URL}")
|
||||||
if [ -z "$${API_RESPONSE}" ]; then
|
if [ -z "$${API_RESPONSE}" ]; then
|
||||||
printf "Failed to fetch release information from HashiCorp API.\n"
|
printf "Failed to fetch release information from HashiCorp API.\n"
|
||||||
return 1
|
return 1
|
||||||
@ -109,7 +129,7 @@ install() {
|
|||||||
cd "$${TEMP_DIR}" || return 1
|
cd "$${TEMP_DIR}" || return 1
|
||||||
|
|
||||||
printf "Downloading from %s\n" "$${DOWNLOAD_URL}"
|
printf "Downloading from %s\n" "$${DOWNLOAD_URL}"
|
||||||
if ! fetch vault.zip "$${DOWNLOAD_URL}"; then
|
if ! fetch "$${DOWNLOAD_URL}" vault.zip; then
|
||||||
printf "Failed to download Vault.\n"
|
printf "Failed to download Vault.\n"
|
||||||
rm -rf "$${TEMP_DIR}"
|
rm -rf "$${TEMP_DIR}"
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user