| #!/bin/bash |
| |
| set -euo pipefail |
| |
| component="${1}" |
| |
| if ! rustup component add "${component}" 2>/dev/null; then |
| # If the component is unavailable on the latest nightly, |
| # use the latest toolchain with the component available. |
| # Refs: https://github.com/rust-lang/rustup-components-history#the-web-part |
| target=$(curl -sSf "https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/${component}") |
| echo "'${component}' is unavailable on the default toolchain, use the toolchain 'nightly-${target}' instead" |
| |
| rustup update "nightly-${target}" --no-self-update |
| rustup default "nightly-${target}" |
| |
| echo "Query rust and cargo versions:" |
| rustup -V |
| rustc -V |
| cargo -V |
| |
| rustup component add "${component}" |
| fi |
| |
| echo "Query component versions:" |
| case "${component}" in |
| clippy | miri) cargo "${component}" -V ;; |
| rustfmt) "${component}" -V ;; |
| esac |