enterprise/syn-serde/ci/install-component.sh
2020-02-17 06:09:45 -06:00

29 lines
906 B
Bash

#!/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