Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vendor install.sh bash style fixes #11238

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
150 changes: 76 additions & 74 deletions Library/Homebrew/cmd/vendor-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,41 +3,43 @@
#:
#: Install Homebrew's portable Ruby.

source "$HOMEBREW_LIBRARY/Homebrew/utils/lock.sh"
# HOMEBREW_CURLRC, HOMEBREW_LIBRARY, HOMEBREW_STDERR is from the user environment
# HOMEBREW_CACHE, HOMEBREW_CURL, HOMEBREW_LINUX, HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION, HOMEBREW_MACOS,
# HOMEBREW_MACOS_VERSION_NUMERIC and HOMEBREW_PROCESSOR are set by brew.sh
# shellcheck disable=SC2154
source "${HOMEBREW_LIBRARY}/Homebrew/utils/lock.sh"

VENDOR_DIR="$HOMEBREW_LIBRARY/Homebrew/vendor"
VENDOR_DIR="${HOMEBREW_LIBRARY}/Homebrew/vendor"

# Built from https://github.com/Homebrew/homebrew-portable-ruby.
MikeMcQuaid marked this conversation as resolved.
Show resolved Hide resolved
#
# Dynamic variables can't be detected by shellcheck
# shellcheck disable=SC2034
if [[ -n "$HOMEBREW_MACOS" ]]
if [[ -n "${HOMEBREW_MACOS}" ]]
then
if [[ "$HOMEBREW_PROCESSOR" = "Intel" ]]
if [[ "${HOMEBREW_PROCESSOR}" = "Intel" ]]
then
ruby_FILENAME="portable-ruby-2.6.3_2.yosemite.bottle.tar.gz"
ruby_SHA="b065e5e3783954f3e65d8d3a6377ca51649bfcfa21b356b0dd70490f74c6bd86"
fi
elif [[ -n "$HOMEBREW_LINUX" ]]
elif [[ -n "${HOMEBREW_LINUX}" ]]
then
case "$HOMEBREW_PROCESSOR" in
case "${HOMEBREW_PROCESSOR}" in
x86_64)
ruby_FILENAME="portable-ruby-2.6.3_2.x86_64_linux.bottle.tar.gz"
ruby_SHA="97e639a64dcec285392b53ad804b5334c324f1d2a8bdc2b5087b8bf8051e332f"
;;
*)
esac
fi

# Dynamic variables can't be detected by shellcheck
# shellcheck disable=SC2034
if [[ -n "$ruby_SHA" && -n "$ruby_FILENAME" ]]
if [[ -n "${ruby_SHA}" && -n "${ruby_FILENAME}" ]]
then
ruby_URL="https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:$ruby_SHA"
ruby_URL2="https://github.com/Homebrew/homebrew-portable-ruby/releases/download/2.6.3_2/$ruby_FILENAME"
ruby_URL="https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:${ruby_SHA}"
ruby_URL2="https://github.com/Homebrew/homebrew-portable-ruby/releases/download/2.6.3_2/${ruby_FILENAME}"
fi

check_linux_glibc_version() {
if [[ -z $HOMEBREW_LINUX || -z $HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION ]]
if [[ -z ${HOMEBREW_LINUX} || -z ${HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION} ]]
then
return 0
fi
Expand All @@ -56,7 +58,7 @@ check_linux_glibc_version() {
glibc_version_minor=${glibc_version#*.}
if (( glibc_version_major < minimum_required_major || glibc_version_minor < minimum_required_minor ))
then
odie "Vendored tools require system Glibc $HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION or later (yours is $glibc_version)."
odie "Vendored tools require system Glibc ${HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION} or later (yours is ${glibc_version})."
fi
else
odie "Failed to detect system Glibc version."
Expand All @@ -65,7 +67,7 @@ check_linux_glibc_version() {

# Execute the specified command, and suppress stderr unless HOMEBREW_STDERR is set.
quiet_stderr() {
if [[ -z "$HOMEBREW_STDERR" ]]; then
if [[ -z "${HOMEBREW_STDERR}" ]]; then
command "$@" 2>/dev/null
else
command "$@"
Expand All @@ -80,7 +82,7 @@ fetch() {
curl_args=()

# do not load .curlrc unless requested (must be the first argument)
if [[ -z "$HOMEBREW_CURLRC" ]]
if [[ -z "${HOMEBREW_CURLRC}" ]]
then
curl_args[${#curl_args[*]}]="-q"
fi
Expand All @@ -90,56 +92,56 @@ fetch() {
--fail
--remote-time
--location
--user-agent "$HOMEBREW_USER_AGENT_CURL"
--user-agent "${HOMEBREW_USER_AGENT_CURL}"
--header "Authorization: Bearer QQ=="
)

if [[ -n "$HOMEBREW_QUIET" ]]
if [[ -n "${HOMEBREW_QUIET}" ]]
then
curl_args[${#curl_args[*]}]="--silent"
elif [[ -z "$HOMEBREW_VERBOSE" ]]
elif [[ -z "${HOMEBREW_VERBOSE}" ]]
then
curl_args[${#curl_args[*]}]="--progress-bar"
fi

if [[ "$HOMEBREW_MACOS_VERSION_NUMERIC" -lt "100600" ]]
if [[ "${HOMEBREW_MACOS_VERSION_NUMERIC}" -lt "100600" ]]
then
curl_args[${#curl_args[*]}]="--insecure"
fi

temporary_path="$CACHED_LOCATION.incomplete"
temporary_path="${CACHED_LOCATION}.incomplete"

mkdir -p "$HOMEBREW_CACHE"
[[ -n "$HOMEBREW_QUIET" ]] || ohai "Downloading $VENDOR_URL" >&2
if [[ -f "$CACHED_LOCATION" ]]
mkdir -p "${HOMEBREW_CACHE}"
[[ -n "${HOMEBREW_QUIET}" ]] || ohai "Downloading ${VENDOR_URL}" >&2
if [[ -f "${CACHED_LOCATION}" ]]
then
[[ -n "$HOMEBREW_QUIET" ]] || echo "Already downloaded: $CACHED_LOCATION" >&2
[[ -n "${HOMEBREW_QUIET}" ]] || echo "Already downloaded: ${CACHED_LOCATION}" >&2
else
if [[ -f "$temporary_path" ]]
if [[ -f "${temporary_path}" ]]
then
# HOMEBREW_CURL is set by brew.sh (and isn't mispelt here)
MikeMcQuaid marked this conversation as resolved.
Show resolved Hide resolved
# shellcheck disable=SC2153
MikeMcQuaid marked this conversation as resolved.
Show resolved Hide resolved
"$HOMEBREW_CURL" "${curl_args[@]}" -C - "$VENDOR_URL" -o "$temporary_path"
"${HOMEBREW_CURL}" "${curl_args[@]}" -C - "${VENDOR_URL}" -o "${temporary_path}"
if [[ $? -eq 33 ]]
then
[[ -n "$HOMEBREW_QUIET" ]] || echo "Trying a full download" >&2
rm -f "$temporary_path"
"$HOMEBREW_CURL" "${curl_args[@]}" "$VENDOR_URL" -o "$temporary_path"
[[ -n "${HOMEBREW_QUIET}" ]] || echo "Trying a full download" >&2
rm -f "${temporary_path}"
"${HOMEBREW_CURL}" "${curl_args[@]}" "${VENDOR_URL}" -o "${temporary_path}"
fi
else
"$HOMEBREW_CURL" "${curl_args[@]}" "$VENDOR_URL" -o "$temporary_path"
"${HOMEBREW_CURL}" "${curl_args[@]}" "${VENDOR_URL}" -o "${temporary_path}"
fi

if [[ ! -f "$temporary_path" ]]
if [[ ! -f "${temporary_path}" ]]
then
[[ -n "$HOMEBREW_QUIET" ]] || ohai "Downloading $VENDOR_URL2" >&2
"$HOMEBREW_CURL" "${curl_args[@]}" "$VENDOR_URL2" -o "$temporary_path"
[[ -n "${HOMEBREW_QUIET}" ]] || ohai "Downloading ${VENDOR_URL2}" >&2
"${HOMEBREW_CURL}" "${curl_args[@]}" "${VENDOR_URL2}" -o "${temporary_path}"
fi

if [[ ! -f "$temporary_path" ]]
if [[ ! -f "${temporary_path}" ]]
then
odie <<EOS
Failed to download $VENDOR_URL and $VENDOR_URL2!
Failed to download ${VENDOR_URL} and ${VENDOR_URL2}!

Do not file an issue on GitHub about this; you will need to figure out for
yourself what issue with your internet connection restricts your access to
Expand All @@ -149,36 +151,36 @@ EOS
fi

trap '' SIGINT
mv "$temporary_path" "$CACHED_LOCATION"
mv "${temporary_path}" "${CACHED_LOCATION}"
trap - SIGINT
fi

if [[ -x "/usr/bin/shasum" ]]
then
sha="$(/usr/bin/shasum -a 256 "$CACHED_LOCATION" | cut -d' ' -f1)"
sha="$(/usr/bin/shasum -a 256 "${CACHED_LOCATION}" | cut -d' ' -f1)"
elif [[ -x "$(type -P sha256sum)" ]]
then
sha="$(sha256sum "$CACHED_LOCATION" | cut -d' ' -f1)"
sha="$(sha256sum "${CACHED_LOCATION}" | cut -d' ' -f1)"
elif [[ -x "$(type -P ruby)" ]]
then
sha="$(ruby <<EOSCRIPT
require 'digest/sha2'
digest = Digest::SHA256.new
File.open('$CACHED_LOCATION', 'rb') { |f| digest.update(f.read) }
File.open('${CACHED_LOCATION}', 'rb') { |f| digest.update(f.read) }
puts digest.hexdigest
EOSCRIPT
)"
else
odie "Cannot verify checksum ('shasum' or 'sha256sum' not found)!"
fi

if [[ "$sha" != "$VENDOR_SHA" ]]
if [[ "${sha}" != "${VENDOR_SHA}" ]]
then
odie <<EOS
Checksum mismatch.
Expected: $VENDOR_SHA
Actual: $sha
Archive: $CACHED_LOCATION
Expected: ${VENDOR_SHA}
Actual: ${sha}
Archive: ${CACHED_LOCATION}
To retry an incomplete download, remove the file above.
EOS
fi
Expand All @@ -187,42 +189,42 @@ EOS
install() {
local tar_args

if [[ -n "$HOMEBREW_VERBOSE" ]]
if [[ -n "${HOMEBREW_VERBOSE}" ]]
then
tar_args="xvzf"
else
tar_args="xzf"
fi

mkdir -p "$VENDOR_DIR/portable-$VENDOR_NAME"
safe_cd "$VENDOR_DIR/portable-$VENDOR_NAME"
mkdir -p "${VENDOR_DIR}/portable-${VENDOR_NAME}"
safe_cd "${VENDOR_DIR}/portable-${VENDOR_NAME}"

trap '' SIGINT

if [[ -d "$VENDOR_VERSION" ]]
if [[ -d "${VENDOR_VERSION}" ]]
then
mv "$VENDOR_VERSION" "$VENDOR_VERSION.reinstall"
mv "${VENDOR_VERSION}" "${VENDOR_VERSION}.reinstall"
fi

safe_cd "$VENDOR_DIR"
[[ -n "$HOMEBREW_QUIET" ]] || ohai "Pouring $VENDOR_FILENAME" >&2
tar "$tar_args" "$CACHED_LOCATION"
safe_cd "$VENDOR_DIR/portable-$VENDOR_NAME"
safe_cd "${VENDOR_DIR}"
[[ -n "${HOMEBREW_QUIET}" ]] || ohai "Pouring ${VENDOR_FILENAME}" >&2
tar "${tar_args}" "${CACHED_LOCATION}"
safe_cd "${VENDOR_DIR}/portable-${VENDOR_NAME}"

if quiet_stderr "./$VENDOR_VERSION/bin/$VENDOR_NAME" --version >/dev/null
if quiet_stderr "./${VENDOR_VERSION}/bin/${VENDOR_NAME}" --version >/dev/null
then
ln -sfn "$VENDOR_VERSION" current
if [[ -d "$VENDOR_VERSION.reinstall" ]]
ln -sfn "${VENDOR_VERSION}" current
if [[ -d "${VENDOR_VERSION}.reinstall" ]]
then
rm -rf "$VENDOR_VERSION.reinstall"
rm -rf "${VENDOR_VERSION}.reinstall"
fi
else
rm -rf "$VENDOR_VERSION"
if [[ -d "$VENDOR_VERSION.reinstall" ]]
rm -rf "${VENDOR_VERSION}"
if [[ -d "${VENDOR_VERSION}.reinstall" ]]
then
mv "$VENDOR_VERSION.reinstall" "$VENDOR_VERSION"
mv "${VENDOR_VERSION}.reinstall" "${VENDOR_VERSION}"
fi
odie "Failed to install $VENDOR_NAME $VENDOR_VERSION!"
odie "Failed to install ${VENDOR_NAME} ${VENDOR_VERSION}!"
fi

trap - SIGINT
Expand All @@ -235,26 +237,26 @@ homebrew-vendor-install() {

for option in "$@"
do
case "$option" in
case "${option}" in
-\?|-h|--help|--usage) brew help vendor-install; exit $? ;;
--verbose) HOMEBREW_VERBOSE=1 ;;
--quiet) HOMEBREW_QUIET=1 ;;
--debug) HOMEBREW_DEBUG=1 ;;
--*) ;;
-*)
[[ "$option" = *v* ]] && HOMEBREW_VERBOSE=1
[[ "$option" = *q* ]] && HOMEBREW_QUIET=1
[[ "$option" = *d* ]] && HOMEBREW_DEBUG=1
[[ "${option}" = *v* ]] && HOMEBREW_VERBOSE=1
[[ "${option}" = *q* ]] && HOMEBREW_QUIET=1
[[ "${option}" = *d* ]] && HOMEBREW_DEBUG=1
;;
*)
[[ -n "$VENDOR_NAME" ]] && odie "This command does not take multiple vendor targets!"
VENDOR_NAME="$option"
[[ -n "${VENDOR_NAME}" ]] && odie "This command does not take multiple vendor targets!"
VENDOR_NAME="${option}"
;;
esac
done

[[ -z "$VENDOR_NAME" ]] && odie "This command requires a vendor target!"
[[ -n "$HOMEBREW_DEBUG" ]] && set -x
[[ -z "${VENDOR_NAME}" ]] && odie "This command requires a vendor target!"
[[ -n "${HOMEBREW_DEBUG}" ]] && set -x
check_linux_glibc_version

filename_var="${VENDOR_NAME}_FILENAME"
Expand All @@ -265,16 +267,16 @@ homebrew-vendor-install() {
VENDOR_SHA="${!sha_var}"
VENDOR_URL="${!url_var}"
VENDOR_URL2="${!url2_var}"
VENDOR_VERSION="$(<"$VENDOR_DIR/portable-$VENDOR_NAME-version")"
VENDOR_VERSION="$(<"${VENDOR_DIR}/portable-${VENDOR_NAME}-version")"

if [[ -z "$VENDOR_URL" || -z "$VENDOR_SHA" ]]
if [[ -z "${VENDOR_URL}" || -z "${VENDOR_SHA}" ]]
then
odie "No Homebrew $VENDOR_NAME $VENDOR_VERSION available for $HOMEBREW_PROCESSOR processors!"
odie "No Homebrew ${VENDOR_NAME} ${VENDOR_VERSION} available for ${HOMEBREW_PROCESSOR} processors!"
fi

CACHED_LOCATION="$HOMEBREW_CACHE/$VENDOR_FILENAME"
CACHED_LOCATION="${HOMEBREW_CACHE}/${VENDOR_FILENAME}"

lock "vendor-install-$VENDOR_NAME"
lock "vendor-install-${VENDOR_NAME}"
fetch
install
}