blob: 943755c5b2e0360ad57e2e58bae9aca13152d02a [file] [log] [blame]
#!/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