summaryrefslogtreecommitdiffstats
path: root/third_party/rust/pin-project/ci/install-component.sh
blob: 943755c5b2e0360ad57e2e58bae9aca13152d02a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/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