| #!/bin/false |
| # shellcheck shell=bash |
| |
| # This file is intended to be sourced with `. shared.sh` or |
| # `source shared.sh`, hence the invalid shebang and not being |
| # marked as an executable file in git. |
| |
| export MIRRORS_BASE="https://ci-mirrors.rust-lang.org/rustc" |
| |
| # See https://unix.stackexchange.com/questions/82598 |
| # Duplicated in docker/scripts/shared.sh |
| function retry { |
| echo "Attempting with retry:" "$@" |
| local n=1 |
| local max=5 |
| while true; do |
| "$@" && break || { |
| if [[ $n -lt $max ]]; then |
| sleep $n # don't retry immediately |
| ((n++)) |
| echo "Command failed. Attempt $n/$max:" |
| else |
| echo "The command has failed after $n attempts." |
| return 1 |
| fi |
| } |
| done |
| } |
| |
| function isCI { |
| [[ "${CI-false}" = "true" ]] || isGitHubActions |
| } |
| |
| function isGitHubActions { |
| [[ "${GITHUB_ACTIONS-false}" = "true" ]] |
| } |
| |
| |
| function isSelfHostedGitHubActions { |
| [[ "${RUST_GHA_SELF_HOSTED-false}" = "true" ]] |
| } |
| |
| function isMacOS { |
| [[ "${OSTYPE}" = "darwin"* ]] |
| } |
| |
| function isWindows { |
| [[ "${OSTYPE}" = "cygwin" ]] || [[ "${OSTYPE}" = "msys" ]] |
| } |
| |
| function isLinux { |
| [[ "${OSTYPE}" = "linux-gnu" ]] |
| } |
| |
| function isKnownToBeMingwBuild { |
| isGitHubActions && [[ "${CI_JOB_NAME}" == *mingw ]] |
| } |
| |
| function isCiBranch { |
| if [[ $# -ne 1 ]]; then |
| echo "usage: $0 <branch-name>" |
| exit 1 |
| fi |
| name="$1" |
| |
| if isGitHubActions; then |
| [[ "${GITHUB_REF}" = "refs/heads/${name}" ]] |
| else |
| echo "isCiBranch only works inside CI!" |
| exit 1 |
| fi |
| } |
| |
| function ciBaseBranch { |
| if isGitHubActions; then |
| echo "${GITHUB_BASE_REF#refs/heads/}" |
| else |
| echo "ciBaseBranch only works inside CI!" |
| exit 1 |
| fi |
| } |
| |
| function ciCommit { |
| if isGitHubActions; then |
| echo "${GITHUB_SHA}" |
| else |
| echo "ciCommit only works inside CI!" |
| exit 1 |
| fi |
| } |
| |
| function ciCheckoutPath { |
| if isGitHubActions; then |
| echo "${GITHUB_WORKSPACE}" |
| else |
| echo "ciCheckoutPath only works inside CI!" |
| exit 1 |
| fi |
| } |
| |
| function ciCommandAddPath { |
| if [[ $# -ne 1 ]]; then |
| echo "usage: $0 <path>" |
| exit 1 |
| fi |
| path="$1" |
| |
| if isGitHubActions; then |
| echo "${path}" >> "${GITHUB_PATH}" |
| else |
| echo "ciCommandAddPath only works inside CI!" |
| exit 1 |
| fi |
| } |
| |
| function ciCommandSetEnv { |
| if [[ $# -ne 2 ]]; then |
| echo "usage: $0 <name> <value>" |
| exit 1 |
| fi |
| name="$1" |
| value="$2" |
| |
| if isGitHubActions; then |
| echo "${name}=${value}" >> "${GITHUB_ENV}" |
| else |
| echo "ciCommandSetEnv only works inside CI!" |
| exit 1 |
| fi |
| } |
| |
| function releaseChannel { |
| if [[ -z "${RUST_CI_OVERRIDE_RELEASE_CHANNEL+x}" ]]; then |
| cat "${ci_dir}/channel" |
| else |
| echo $RUST_CI_OVERRIDE_RELEASE_CHANNEL |
| fi |
| } |