Allow overriding the toolchain file

This commit is contained in:
James ‘Twey’ Kay 2023-10-31 12:58:53 +00:00
parent 317ed62323
commit 5ea736b97f
No known key found for this signature in database
GPG Key ID: 1B63E80AA5CA35C3
2 changed files with 13 additions and 7 deletions

View File

@ -42,7 +42,9 @@ jobs:
## Inputs ## Inputs
All inputs are optional. All inputs are optional.
If a [toolchain file](https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file) (i.e., `rust-toolchain` or `rust-toolchain.toml`) is found in the root of the repository, its `toolchain` value takes precedence. If a [toolchain file](https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file) (i.e., `rust-toolchain` or `rust-toolchain.toml`) is found in the root of the repository and no `toolchain` value is provided, all items specified in the toolchain file will be installed.
If a `toolchain` value is provided, the toolchain file will be ignored.
If no `toolchain` value or toolchain file is present, it will default to `stable`.
First, all items specified in the toolchain file are installed. First, all items specified in the toolchain file are installed.
Afterward, the `components` and `target` specified via inputs are installed in addition to the items from the toolchain file. Afterward, the `components` and `target` specified via inputs are installed in addition to the items from the toolchain file.

View File

@ -15,7 +15,6 @@ inputs:
toolchain: toolchain:
description: "Rust toolchain specification -- see https://rust-lang.github.io/rustup/concepts/toolchains.html#toolchain-specification" description: "Rust toolchain specification -- see https://rust-lang.github.io/rustup/concepts/toolchains.html#toolchain-specification"
required: false required: false
default: "stable"
target: target:
description: "Target triple to install for this toolchain" description: "Target triple to install for this toolchain"
required: false required: false
@ -107,9 +106,9 @@ runs:
fi fi
if: runner.os != 'Windows' if: runner.os != 'Windows'
shell: bash shell: bash
- name: rustup toolchain install ${{inputs.toolchain}} - name: rustup toolchain install ${{inputs.toolchain || 'stable'}}
run: | run: |
if [[ -f "rust-toolchain" || -f "rust-toolchain.toml" ]] if [[ -z "$toolchain" && ( -f "rust-toolchain" || -f "rust-toolchain.toml" ) ]]
then then
# Install the toolchain as specified in the file # Install the toolchain as specified in the file
# Might break at some point: https://github.com/rust-lang/rustup/issues/1397 # Might break at some point: https://github.com/rust-lang/rustup/issues/1397
@ -121,10 +120,15 @@ runs:
rustup target add ${targets//,/ } rustup target add ${targets//,/ }
fi fi
else else
rustup toolchain install ${{inputs.toolchain}}${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update if [[ -z "$toolchain" ]]
rustup default ${{inputs.toolchain}} then
toolchain=stable
fi
rustup toolchain install $toolchain${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update
rustup default $toolchain
fi fi
env: env:
toolchain: ${{inputs.toolchain}}
targets: ${{inputs.target}} targets: ${{inputs.target}}
components: ${{inputs.components}} components: ${{inputs.components}}
shell: bash shell: bash