aboutsummaryrefslogtreecommitdiff
path: root/ci/install-component.sh
blob: de08b8f9b870bd6bc3ff7c8c72d7d89e7ef2b74a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/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"

    . ci/install-rust.sh "nightly-${target}"

    rustup component add "${component}"
fi

case "${component}" in
    rustfmt | rustdoc) "${component}" -V ;;
    *) cargo "${component}" -V ;;
esac