14 Commits
v1.4.3 ... v1.5

Author SHA1 Message Date
f3c84ee10b Merge pull request #18 from JeanMertz/rustflags 2023-05-29 21:44:44 +02:00
1ef811fbfb Restore behavior to not touch existing RUSTFLAGS variable
Add changelog
2023-05-29 21:38:39 +02:00
70241ab2e9 fixes 2023-05-29 21:27:29 +02:00
823a4a135d fixes 2023-05-29 21:27:29 +02:00
aaa7eef1a2 requred -> required 2023-05-29 21:27:29 +02:00
24274e4435 allow disabling RUSTFLAGS config 2023-05-29 21:27:29 +02:00
cf60eafd0a Merge pull request #19 from actions-rust-lang/better-toolchain-support 2023-05-29 20:43:47 +02:00
289d5e6164 Add changelog 2023-05-29 20:31:27 +02:00
661e2d23dd Explain the new behavior in the README 2023-05-20 18:03:52 +02:00
b065e5ab9f Install components and targets after installing everything from the rust-toolchain file 2023-05-20 16:49:42 +02:00
03aaf6be76 Check that listed components are installed even with a rust-toolchain file 2023-05-20 16:29:33 +02:00
ac6bb38f31 Merge pull request #15 from actions-rust-lang/fix-problem-matcher 2023-03-18 00:30:54 +01:00
12a4c2d9dc Add new problem matcher that is aware of color codes
The action runner currently fails to strip color codes from the output.
This means that many matchers currectly do not work.

https://github.com/actions/runner/issues/2341
https://github.com/actions/runner/pull/2430

The new matcher is copied from kaj/rsass which is MIT licensed.

3e5d6c0600/.github/workflows/rust-problem-matcher.json
2023-03-18 00:18:20 +01:00
3b557ff24c Update rust.json
The regex for the problem matcher is invalid, since the `-` creates a range. But the range is invalid, since it cannot start with `\s`.
2023-03-18 00:09:26 +01:00
5 changed files with 73 additions and 16 deletions

View File

@ -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

View File

@ -7,6 +7,29 @@ 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
* Use color aware problem matcher.
The problem matcher currently runs against the colored terminal output ([Bug 1](https://github.com/actions/runner/issues/2341), [Bug 2](https://github.com/actions/runner/pull/2430)).
The previous matcher was not aware of ANSII color codes and did not work.
## [1.4.3] - 2023-02-21
### Fixed

View File

@ -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

View File

@ -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

View File

@ -16,16 +16,16 @@
"owner": "clippy",
"pattern": [
{
"regexp": "^(warning|warn|error)(\\[(.*)\\])?: (.*)$",
"regexp": "^(?:\\x1b\\[[\\d;]+m)*(warning|warn|error)(?:\\x1b\\[[\\d;]+m)*(\\[(.*)\\])?(?:\\x1b\\[[\\d;]+m)*:(?:\\x1b\\[[\\d;]+m)* ([^\\x1b]*)(?:\\x1b\\[[\\d;]+m)*$",
"severity": 1,
"message": 4,
"code": 3
},
{
"regexp": "^([\\s->=]*(.*):(\\d*):(\\d*)|.*)$",
"file": 2,
"line": 3,
"column": 4
"regexp": "^(?:\\x1b\\[[\\d;]+m)*\\s*(?:\\x1b\\[[\\d;]+m)*\\s*--> (?:\\x1b\\[[\\d;]+m)*(.*):(\\d*):(\\d*)(?:\\x1b\\[[\\d;]+m)*$",
"file": 1,
"line": 2,
"column": 3
}
]
}