Skip to content

specify crate name for gen workspace (#191) #523

specify crate name for gen workspace (#191)

specify crate name for gen workspace (#191) #523

Triggered via push August 31, 2023 10:54
Status Success
Total duration 10m 27s
Artifacts

ci.yaml

on: push
Matrix: lint
CI is green
0s
CI is green
Fit to window
Zoom out
Zoom in

Annotations

44 warnings
this function has too many arguments (8/7): pilota-build/src/lib.rs#L232
warning: this function has too many arguments (8/7) --> pilota-build/src/lib.rs:232:5 | 232 | / pub fn build_cx( 233 | | services: Vec<IdlService>, 234 | | out: Option<Output>, 235 | | mut parser: P, ... | 240 | | keep_unknown_fields: Vec<PathBuf>, 241 | | ) -> Context { | |________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments = note: `#[warn(clippy::too_many_arguments)]` on by default
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`: pilota-build/src/plugin/mod.rs#L128
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` --> pilota-build/src/plugin/mod.rs:128:13 | 128 | / match &node.kind { 129 | | NodeKind::Item(item) => p.on_item(cx, *def_id, item.clone()), 130 | | _ => {} 131 | | } | |_____________^ help: try this: `if let NodeKind::Item(item) = &node.kind { p.on_item(cx, *def_id, item.clone()) }` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`: pilota-build/src/resolve.rs#L167
warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` --> pilota-build/src/resolve.rs:167:13 | 167 | / match &item.kind { 168 | | ir::ItemKind::Enum(e) => e.variants.iter().for_each(|e| { 169 | | self.def_sym(Namespace::Value, (*e.name).clone()); 170 | | }), 171 | | _ => {} 172 | | } | |_____________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match = note: `#[warn(clippy::single_match)]` on by default help: try this | 167 ~ if let ir::ItemKind::Enum(e) = &item.kind { e.variants.iter().for_each(|e| { 168 + self.def_sym(Namespace::Value, (*e.name).clone()); 169 + }) } |
parameter is only used in recursion: pilota-build/src/parser/protobuf/mod.rs#L66
warning: parameter is only used in recursion --> pilota-build/src/parser/protobuf/mod.rs:66:9 | 66 | message_name: Option<&str>, | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_name` | note: parameter used here --> pilota-build/src/parser/protobuf/mod.rs:81:33 | 81 | ... message_name, | ^^^^^^^^^^^^ ... 87 | ... message_name, | ^^^^^^^^^^^^ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion = note: `#[warn(clippy::only_used_in_recursion)]` on by default
single-character string constant used as pattern: pilota-build/src/middle/context.rs#L890
warning: single-character string constant used as pattern --> pilota-build/src/middle/context.rs:890:38 | 890 | ... .replace(".", "_") | ^^^ help: try using a `char` instead: `'.'` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern = note: `#[warn(clippy::single_char_pattern)]` on by default
redundant closure: pilota-build/src/middle/context.rs#L881
warning: redundant closure --> pilota-build/src/middle/context.rs:881:45 | 881 | .map(|s| s.as_str().map(|s| FastStr::new(s))) | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `FastStr::new` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure
called `map(..).flatten()` on `Option`: pilota-build/src/middle/context.rs#L881
warning: called `map(..).flatten()` on `Option` --> pilota-build/src/middle/context.rs:881:22 | 881 | .map(|s| s.as_str().map(|s| FastStr::new(s))) | ______________________^ 882 | | .flatten() | |______________________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|s| s.as_str().map(|s| FastStr::new(s)))` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten = note: `#[warn(clippy::map_flatten)]` on by default
if let .. else expression looks like `matches!` macro: pilota-build/src/middle/context.rs#L355
warning: if let .. else expression looks like `matches!` macro --> pilota-build/src/middle/context.rs:355:33 | 355 | / ... if let Some(crate::tags::KeepUnknownFields(false)) = 356 | | ... cx.db.tags_map().get(&tags).and_then(|tags| { 357 | | ... tags.get::<crate::tags::KeepUnknownFields>() 358 | | ... }) ... | 362 | | ... true 363 | | ... } | |_______________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro = note: `#[warn(clippy::match_like_matches_macro)]` on by default help: try this | 355 ~ !matches!(cx.db.tags_map().get(&tags).and_then(|tags| { 356 + tags.get::<crate::tags::KeepUnknownFields>() 357 + }), Some(crate::tags::KeepUnknownFields(false))) |
this expression creates a reference which is immediately dereferenced by the compiler: pilota-build/src/middle/context.rs#L344
warning: this expression creates a reference which is immediately dereferenced by the compiler --> pilota-build/src/middle/context.rs:344:38 | 344 | let file = files.get(&file_id).unwrap(); | ^^^^^^^^ help: change this to: `file_id` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
this expression creates a reference which is immediately dereferenced by the compiler: pilota-build/src/middle/context.rs#L210
warning: this expression creates a reference which is immediately dereferenced by the compiler --> pilota-build/src/middle/context.rs:210:62 | 210 | PathCollector { cx, set }.visit_path(&p); | ^^ help: change this to: `p` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow = note: `#[warn(clippy::needless_borrow)]` on by default
this lifetime isn't used in the function definition: pilota-build/src/codegen/mod.rs#L428
warning: this lifetime isn't used in the function definition --> pilota-build/src/codegen/mod.rs:428:24 | 428 | pub fn write_items<'a>(&self, stream: &mut String, items: impl Iterator<Item = CodegenItem>) | ^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default
useless use of `format!`: pilota-build/src/codegen/thrift/mod.rs#L672
warning: useless use of `format!` --> pilota-build/src/codegen/thrift/mod.rs:672:33 | 672 | / ... format!( 673 | | ... r#"Err(::pilota::thrift::DecodeError::new( 674 | | ... ::pilota::thrift::DecodeErrorKind::InvalidData, 675 | | ... "received empty union from remote Message") 676 | | ... )"# 677 | | ... ) | |_______________________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format = note: `#[warn(clippy::useless_format)]` on by default help: consider using `.to_string()` | 672 ~ r#"Err(::pilota::thrift::DecodeError::new( 673 + ::pilota::thrift::DecodeErrorKind::InvalidData, 674 + "received empty union from remote Message") 675 + )"#.to_string() |
writing `&mut String` instead of `&mut str` involves a new object where a slice will do: pilota-build/src/codegen/thrift/mod.rs#L316
warning: writing `&mut String` instead of `&mut str` involves a new object where a slice will do --> pilota-build/src/codegen/thrift/mod.rs:316:59 | 316 | fn codegen_entry_enum(&self, _def_id: DefId, _stream: &mut String, _e: &rir::Enum) { | ^^^^^^^^^^^ help: change this to: `&mut str` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg = note: `#[warn(clippy::ptr_arg)]` on by default
unneeded `return` statement: pilota/src/thrift/compact.rs#L1649
warning: unneeded `return` statement --> pilota/src/thrift/compact.rs:1649:18 | 1649 | unsafe { return Ok(FastStr::from_bytes_unchecked(bytes)) } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 1649 | unsafe { Ok(FastStr::from_bytes_unchecked(bytes)) } | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
redundant closure: pilota-build/src/codegen/workspace.rs#L120
warning: redundant closure --> pilota-build/src/codegen/workspace.rs:120:18 | 120 | .map(|s| FastStr::new(s)) | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `FastStr::new` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure = note: `#[warn(clippy::redundant_closure)]` on by default
use Vec::sort_by_key here instead: pilota-build/src/codegen/toml.rs#L9
warning: use Vec::sort_by_key here instead --> pilota-build/src/codegen/toml.rs:9:13 | 9 | a.sort_by(|a, b| a.to_string().cmp(&b.to_string())); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `a.sort_by_key(|a| a.to_string())` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by = note: `#[warn(clippy::unnecessary_sort_by)]` on by default
explicit call to `.into_iter()` in function argument accepting `IntoIterator`: pilota-build/src/codegen/pkg_tree.rs#L32
warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` --> pilota-build/src/codegen/pkg_tree.rs:32:20 | 32 | .chain(Some(k).into_iter()) | ^^^^^^^^^^^^^^^^^^^ help: consider removing the `.into_iter()`: `Some(k)` | note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` --> /rustc/5680fa18feaa87f3ff04063800aec256c3d4b4be/library/core/src/iter/traits/iterator.rs:522:12 = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion = note: `#[warn(clippy::useless_conversion)]` on by default
unneeded `return` statement: pilota/src/thrift/binary_unsafe.rs#L1107
warning: unneeded `return` statement --> pilota/src/thrift/binary_unsafe.rs:1107:13 | 1107 | return Ok(FastStr::from_bytes_unchecked(bytes)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 1107 - return Ok(FastStr::from_bytes_unchecked(bytes)); 1107 + Ok(FastStr::from_bytes_unchecked(bytes)) |
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L738
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:738:17 | 738 | self.buf.as_mut_ptr().offset(self.index as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.buf.as_mut_ptr().add(self.index)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L683
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:683:17 | 683 | self.buf.as_mut_ptr().offset(self.index as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.buf.as_mut_ptr().add(self.index)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L674
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:674:21 | 674 | self.trans.bytes_mut().as_mut_ptr().offset(l as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.trans.bytes_mut().as_mut_ptr().add(l)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L653
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:653:17 | 653 | self.buf.as_mut_ptr().offset(self.index as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.buf.as_mut_ptr().add(self.index)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L551
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:551:17 | 551 | self.buf.as_mut_ptr().offset(self.index as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.buf.as_mut_ptr().add(self.index)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L542
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:542:21 | 542 | self.trans.bytes_mut().as_mut_ptr().offset(l as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.trans.bytes_mut().as_mut_ptr().add(l)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L448
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:448:17 | 448 | self.buf.as_mut_ptr().offset(self.index as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.buf.as_mut_ptr().add(self.index)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L393
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:393:17 | 393 | self.buf.as_mut_ptr().offset(self.index as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.buf.as_mut_ptr().add(self.index)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L379
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:379:17 | 379 | self.buf.as_mut_ptr().offset(self.index as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.buf.as_mut_ptr().add(self.index)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast
use of `offset` with a `usize` casted to an `isize`: pilota/src/thrift/binary_unsafe.rs#L277
warning: use of `offset` with a `usize` casted to an `isize` --> pilota/src/thrift/binary_unsafe.rs:277:17 | 277 | self.buf.as_mut_ptr().offset(self.index as isize), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.buf.as_mut_ptr().add(self.index)` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast = note: `#[warn(clippy::ptr_offset_with_cast)]` on by default
unneeded `return` statement: pilota/src/thrift/binary_le.rs#L913
warning: unneeded `return` statement --> pilota/src/thrift/binary_le.rs:913:18 | 913 | unsafe { return Ok(FastStr::from_bytes_unchecked(bytes)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return help: remove `return` | 913 - unsafe { return Ok(FastStr::from_bytes_unchecked(bytes)) }; 913 + unsafe { Ok(FastStr::from_bytes_unchecked(bytes)) } |
unneeded `return` statement: pilota/src/thrift/binary.rs#L699
warning: unneeded `return` statement --> pilota/src/thrift/binary.rs:699:18 | 699 | unsafe { return Ok(FastStr::from_bytes_unchecked(bytes)) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return = note: `#[warn(clippy::needless_return)]` on by default help: remove `return` | 699 - unsafe { return Ok(FastStr::from_bytes_unchecked(bytes)) }; 699 + unsafe { Ok(FastStr::from_bytes_unchecked(bytes)) } |
this function has too many arguments (8/7): pilota/src/prost/encoding.rs#L1562
warning: this function has too many arguments (8/7) --> pilota/src/prost/encoding.rs:1562:9 | 1562 | / pub fn encode_with_default<K, V, B, KE, KL, VE, VL>( 1563 | | key_encode: KE, 1564 | | key_encoded_len: KL, 1565 | | val_encode: VE, ... | 1570 | | buf: &mut B, 1571 | | ) where | |__________^ ... 1680 | map!(BTreeMap); | -------------- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments = note: this warning originates in the macro `map` (in Nightly builds, run with -Z macro-backtrace for more info)
this function has too many arguments (8/7): pilota/src/prost/encoding.rs#L1562
warning: this function has too many arguments (8/7) --> pilota/src/prost/encoding.rs:1562:9 | 1562 | / pub fn encode_with_default<K, V, B, KE, KL, VE, VL>( 1563 | | key_encode: KE, 1564 | | key_encoded_len: KL, 1565 | | val_encode: VE, ... | 1570 | | buf: &mut B, 1571 | | ) where | |__________^ ... 1676 | map!(HashMap); | ------------- in this macro invocation | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments = note: `#[warn(clippy::too_many_arguments)]` on by default = note: this warning originates in the macro `map` (in Nightly builds, run with -Z macro-backtrace for more info)
private item shadows public glob re-export: pilota-build/src/middle/ty.rs#L5
warning: private item shadows public glob re-export --> pilota-build/src/middle/ty.rs:5:36 | 5 | use super::{context::tls::with_cx, rir::Path}; | ^^^^^^^^^ | note: the name `Path` in the type namespace is supposed to be publicly re-exported here --> pilota-build/src/middle/ty.rs:3:9 | 3 | pub use TyKind::*; | ^^^^^^^^^ note: but the private item here shadows it --> pilota-build/src/middle/ty.rs:5:36 | 5 | use super::{context::tls::with_cx, rir::Path}; | ^^^^^^^^^
private item shadows public glob re-export: pilota-build/src/middle/ty.rs#L1
warning: private item shadows public glob re-export --> pilota-build/src/middle/ty.rs:1:25 | 1 | use std::{fmt::Display, sync::Arc}; | ^^^^^^^^^ | note: the name `Arc` in the type namespace is supposed to be publicly re-exported here --> pilota-build/src/middle/ty.rs:3:9 | 3 | pub use TyKind::*; | ^^^^^^^^^ note: but the private item here shadows it --> pilota-build/src/middle/ty.rs:1:25 | 1 | use std::{fmt::Display, sync::Arc}; | ^^^^^^^^^ = note: `#[warn(hidden_glob_reexports)]` on by default
this `else { if .. }` block can be collapsed: pilota-build/src/codegen/thrift/decode_helper.rs#L93
warning: this `else { if .. }` block can be collapsed --> pilota-build/src/codegen/thrift/decode_helper.rs:93:16 | 93 | } else { | ________________^ 94 | | if keep { 95 | | "__pilota_offset += protocol.field_begin_len(field_ident.field_type, field_ident.id);".into() 96 | | } else { 97 | | "protocol.field_begin_len(field_ident.field_type, field_ident.id);".into() 98 | | } 99 | | } | |_________^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_else_if = note: `#[warn(clippy::collapsible_else_if)]` on by default help: collapse nested if block | 93 ~ } else if keep { 94 + "__pilota_offset += protocol.field_begin_len(field_ident.field_type, field_ident.id);".into() 95 + } else { 96 + "protocol.field_begin_len(field_ident.field_type, field_ident.id);".into() 97 + } |
the `pair @ _` pattern can be written as just `pair`: pilota-build/src/codegen/toml.rs#L19
warning: the `pair @ _` pattern can be written as just `pair` --> pilota-build/src/codegen/toml.rs:19:9 | 19 | pair @ _ => panic!("can not merge {pair:?}"), | ^^^^^^^^ help: try: `pair` | = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern = note: `#[warn(clippy::redundant_pattern)]` on by default
test-windows
The following actions uses node12 which is deprecated and will be forced to run on node16: Swatinem/rust-cache@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
test-windows
The `save-state` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
test-windows
The `save-state` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
test-windows
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
test-macos
The following actions uses node12 which is deprecated and will be forced to run on node16: Swatinem/rust-cache@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
test-macos
The `save-state` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
test-macos
The `save-state` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
test-macos
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/