Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
f3c84ee10b | |||
1ef811fbfb | |||
70241ab2e9 | |||
823a4a135d | |||
aaa7eef1a2 | |||
24274e4435 | |||
cf60eafd0a | |||
289d5e6164 | |||
661e2d23dd | |||
b065e5ab9f | |||
03aaf6be76 |
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
@ -48,6 +48,7 @@ jobs:
|
||||
id: toolchain
|
||||
with:
|
||||
toolchain: ${{matrix.rust}}
|
||||
components: clippy
|
||||
- name: Check ${{'${{steps.toolchain.outputs.rustc-version}}'}}
|
||||
run: echo '${{steps.toolchain.outputs.rustc-version}}'
|
||||
- name: Check ${{'${{steps.toolchain.outputs.cargo-version}}'}}
|
||||
@ -62,4 +63,4 @@ jobs:
|
||||
# Add tiny empty crate.
|
||||
# This checks that registry access works.
|
||||
- run: cargo add serde_as
|
||||
- run: cargo check
|
||||
- run: cargo clippy
|
||||
|
15
CHANGELOG.md
15
CHANGELOG.md
@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.5.0] - 2023-05-29
|
||||
|
||||
### Added
|
||||
|
||||
* Support installing additional components and targets that are not listed in `rust-toolchain` (#14)
|
||||
Before only the items listed in `rust-toolchain` were installed.
|
||||
Now all the items from the toolchain file are installed and then all the `target`s and `components` that are provided as action inputs.
|
||||
This allows installing extra tools only for CI or simplify testing special targets in CI.
|
||||
* Allow skipping the creation of a `RUSTFLAGS` environment variable.
|
||||
Cargos logic for rustflags is complicated, and setting the `RUSTFLAGS` environment variable prevents other ways of working.
|
||||
Provide a new `rustflags` input, which controls the environment variable creation.
|
||||
If the value is set to the empty string, then `RUSTFLAGS` is not created.
|
||||
|
||||
Pre-existing `RUSTFLAGS` variables are never modified by this extension.
|
||||
|
||||
## [1.4.4] - 2023-03-18
|
||||
|
||||
### Fixed
|
||||
|
34
README.md
34
README.md
@ -42,15 +42,32 @@ jobs:
|
||||
## Inputs
|
||||
|
||||
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, it takes precedence.
|
||||
All input values are ignored if a toolchain file exists.
|
||||
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.
|
||||
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.
|
||||
|
||||
| Name | Description | Default |
|
||||
| ------------ | --------------------------------------------------------------------------------- | ------- |
|
||||
| `toolchain` | Rustup toolchain specifier e.g. `stable`, `nightly`, `1.42.0`. | stable |
|
||||
| `target` | Additional target support to install e.g. `wasm32-unknown-unknown` | |
|
||||
| `components` | Comma-separated string of additional components to install e.g. `clippy, rustfmt` | |
|
||||
| `cache` | Automatically configure Rust cache (using `Swatinem/rust-cache`) | true |
|
||||
| Name | Description | Default |
|
||||
| ------------ | -------------------------------------------------------------------------------------- | ------------- |
|
||||
| `toolchain` | Rustup toolchain specifier e.g. `stable`, `nightly`, `1.42.0`. | stable |
|
||||
| `target` | Additional target support to install e.g. `wasm32-unknown-unknown` | |
|
||||
| `components` | Comma-separated string of additional components to install e.g. `clippy, rustfmt` | |
|
||||
| `cache` | Automatically configure Rust cache (using `Swatinem/rust-cache`) | true |
|
||||
| `rustflags` | Set the value of `RUSTFLAGS` (set to empty string to avoid overwriting existing flags) | "-D warnings" |
|
||||
|
||||
### RUSTFLAGS
|
||||
|
||||
By default, this action sets the `RUSTFLAGS` environment variable to `-D warnings`.
|
||||
However, rustflags sources are mutually exclusive, so setting this environment variable omits any configuration through `target.*.rustflags` or `build.rustflags`.
|
||||
|
||||
* If `RUSTFLAGS` is already set, no modifications of the variable are made and the original value remains.
|
||||
* If `RUSTFLAGS` is unset and the `rustflags` input is empty (i.e., the empty string), then it will remain unset.
|
||||
Use this, if you want to prevent the value from being set because you make use of `target.*.rustflags` or `build.rustflags`.
|
||||
* Otherwise, the environment variable `RUSTFLAGS` is set to the content of `rustflags`.
|
||||
|
||||
To prevent this from happening, set the `rustflags` input to an empty string, which will
|
||||
prevent the action from setting `RUSTFLAGS` at all, keeping any existing preferences.
|
||||
|
||||
You can read more rustflags, and their load order, in the [Cargo reference].
|
||||
|
||||
## Outputs
|
||||
|
||||
@ -67,3 +84,4 @@ License].
|
||||
|
||||
[MIT License]: LICENSE
|
||||
[Problem Matchers]: https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md
|
||||
[Cargo reference]: https://doc.rust-lang.org/cargo/reference/config.html?highlight=unknown#buildrustflags
|
||||
|
19
action.yml
19
action.yml
@ -26,6 +26,10 @@ inputs:
|
||||
description: "Automatically configure Rust cache"
|
||||
required: false
|
||||
default: "true"
|
||||
rustflags:
|
||||
description: "set RUSTFLAGS environment variable, set to empty string to avoid overwriting build.rustflags"
|
||||
required: false
|
||||
default: "-D warnings"
|
||||
|
||||
outputs:
|
||||
rustc-version:
|
||||
@ -76,8 +80,8 @@ runs:
|
||||
if [[ ! -v RUST_BACKTRACE ]]; then
|
||||
echo "RUST_BACKTRACE=short" >> $GITHUB_ENV
|
||||
fi
|
||||
if [[ ! -v RUSTFLAGS ]]; then
|
||||
echo "RUSTFLAGS=-D warnings" >> $GITHUB_ENV
|
||||
if [[ ( ! -v RUSTFLAGS ) && $NEW_RUSTFLAGS != "" ]]; then
|
||||
echo "RUSTFLAGS=$NEW_RUSTFLAGS" >> $GITHUB_ENV
|
||||
fi
|
||||
# Enable faster sparse index on nightly
|
||||
# The value is ignored on stable and causes no problems
|
||||
@ -89,6 +93,8 @@ runs:
|
||||
echo "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" >> $GITHUB_ENV
|
||||
fi
|
||||
shell: bash
|
||||
env:
|
||||
NEW_RUSTFLAGS: ${{inputs.rustflags}}
|
||||
- name: "Install Rust Problem Matcher"
|
||||
run: echo "::add-matcher::${{ github.action_path }}/rust.json"
|
||||
shell: bash
|
||||
@ -108,10 +114,19 @@ runs:
|
||||
# Install the toolchain as specified in the file
|
||||
# Might break at some point: https://github.com/rust-lang/rustup/issues/1397
|
||||
rustup show
|
||||
if [[ -n $components ]]; then
|
||||
rustup component add ${components//,/ }
|
||||
fi
|
||||
if [[ -n $targets ]]; then
|
||||
rustup target add ${targets//,/ }
|
||||
fi
|
||||
else
|
||||
rustup toolchain install ${{inputs.toolchain}}${{steps.flags.outputs.targets}}${{steps.flags.outputs.components}} --profile minimal${{steps.flags.outputs.downgrade}} --no-self-update
|
||||
rustup default ${{inputs.toolchain}}
|
||||
fi
|
||||
env:
|
||||
targets: ${{inputs.target}}
|
||||
components: ${{inputs.components}}
|
||||
shell: bash
|
||||
|
||||
- name: Print installed versions
|
||||
|
Reference in New Issue
Block a user