mirror of
https://github.com/leptos-rs/leptos.git
synced 2025-12-27 09:54:41 -05:00
feat: add autofix.ci to address formatting issues and possible clippy fixes (#3235)
* feat: add `autofix.ci` to address formatting issues and possible clippy fixes * fix: initial run of `autofix.ci` script to prevent PR pollution at first run * fix: typo and indent issue in `autofix.yml` * fix: run `autofix.ci` over members with no features
This commit is contained in:
48
.github/workflows/autofix.yml
vendored
Normal file
48
.github/workflows/autofix.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
name: autofix.ci
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches: ["main"]
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
env:
|
||||||
|
CARGO_TERM_COLOR: always
|
||||||
|
RUST_BACKTRACE: 1
|
||||||
|
jobs:
|
||||||
|
autofix:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
|
with: {toolchain: nightly, components: "rustfmt, clippy", target: "wasm32-unknown-unknown", rustflags: ""}
|
||||||
|
- name: Install jq
|
||||||
|
run: sudo apt-get install jq
|
||||||
|
- run: |
|
||||||
|
echo "Formatting the workspace"
|
||||||
|
cargo fmt --all
|
||||||
|
|
||||||
|
echo "Running Clippy against each member's features (default features included)"
|
||||||
|
for member in $(cargo metadata --no-deps --format-version 1 | jq -r '.packages[] | .name'); do
|
||||||
|
echo "Working on member $member":
|
||||||
|
echo -e "\tdefault-features/no-features:"
|
||||||
|
# this will also run on members with no features or default features
|
||||||
|
cargo clippy --allow-dirty --fix --lib --package "$member"
|
||||||
|
|
||||||
|
features=$(cargo metadata --no-deps --format-version 1 | jq -r ".packages[] | select(.name == \"$member\") | .features | keys[]")
|
||||||
|
for feature in $features; do
|
||||||
|
if [ "$feature" = "default" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo -e "\tfeature $feature"
|
||||||
|
cargo clippy --allow-dirty --fix --lib --package "$member" --features "$feature"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
- uses: autofix-ci/action@v1.3.1
|
||||||
|
if: ${{ always() }}
|
||||||
|
with:
|
||||||
|
fail-fast: false
|
||||||
@@ -223,14 +223,14 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn clone_callback() {
|
fn clone_callback() {
|
||||||
let callback = Callback::new(move |_no_clone: NoClone| NoClone {});
|
let callback = Callback::new(move |_no_clone: NoClone| NoClone {});
|
||||||
let _cloned = callback.clone();
|
let _cloned = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn clone_unsync_callback() {
|
fn clone_unsync_callback() {
|
||||||
let callback =
|
let callback =
|
||||||
UnsyncCallback::new(move |_no_clone: NoClone| NoClone {});
|
UnsyncCallback::new(move |_no_clone: NoClone| NoClone {});
|
||||||
let _cloned = callback.clone();
|
let _cloned = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -30,14 +30,14 @@ fn ws_from_str_test() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn env_w_default_test() {
|
fn env_w_default_test() {
|
||||||
_ = temp_env::with_var("LEPTOS_CONFIG_ENV_TEST", Some("custom"), || {
|
temp_env::with_var("LEPTOS_CONFIG_ENV_TEST", Some("custom"), || {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
env_w_default("LEPTOS_CONFIG_ENV_TEST", "default").unwrap(),
|
env_w_default("LEPTOS_CONFIG_ENV_TEST", "default").unwrap(),
|
||||||
String::from("custom")
|
String::from("custom")
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
_ = temp_env::with_var_unset("LEPTOS_CONFIG_ENV_TEST", || {
|
temp_env::with_var_unset("LEPTOS_CONFIG_ENV_TEST", || {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
env_w_default("LEPTOS_CONFIG_ENV_TEST", "default").unwrap(),
|
env_w_default("LEPTOS_CONFIG_ENV_TEST", "default").unwrap(),
|
||||||
String::from("default")
|
String::from("default")
|
||||||
@@ -47,14 +47,14 @@ fn env_w_default_test() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn env_wo_default_test() {
|
fn env_wo_default_test() {
|
||||||
_ = temp_env::with_var("LEPTOS_CONFIG_ENV_TEST", Some("custom"), || {
|
temp_env::with_var("LEPTOS_CONFIG_ENV_TEST", Some("custom"), || {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
env_wo_default("LEPTOS_CONFIG_ENV_TEST").unwrap(),
|
env_wo_default("LEPTOS_CONFIG_ENV_TEST").unwrap(),
|
||||||
Some(String::from("custom"))
|
Some(String::from("custom"))
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
_ = temp_env::with_var_unset("LEPTOS_CONFIG_ENV_TEST", || {
|
temp_env::with_var_unset("LEPTOS_CONFIG_ENV_TEST", || {
|
||||||
assert_eq!(env_wo_default("LEPTOS_CONFIG_ENV_TEST").unwrap(), None);
|
assert_eq!(env_wo_default("LEPTOS_CONFIG_ENV_TEST").unwrap(), None);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ enum InertElementBuilder<'a> {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ToTokens for InertElementBuilder<'a> {
|
impl ToTokens for InertElementBuilder<'_> {
|
||||||
fn to_tokens(&self, tokens: &mut TokenStream) {
|
fn to_tokens(&self, tokens: &mut TokenStream) {
|
||||||
match self {
|
match self {
|
||||||
InertElementBuilder::GlobalClass { strs, .. } => {
|
InertElementBuilder::GlobalClass { strs, .. } => {
|
||||||
@@ -219,7 +219,7 @@ enum GlobalClassItem<'a> {
|
|||||||
String(String),
|
String(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ToTokens for GlobalClassItem<'a> {
|
impl ToTokens for GlobalClassItem<'_> {
|
||||||
fn to_tokens(&self, tokens: &mut TokenStream) {
|
fn to_tokens(&self, tokens: &mut TokenStream) {
|
||||||
let addl_tokens = match self {
|
let addl_tokens = match self {
|
||||||
GlobalClassItem::Global(v) => v.to_token_stream(),
|
GlobalClassItem::Global(v) => v.to_token_stream(),
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ pub enum Oco<'a, T: ?Sized + ToOwned + 'a> {
|
|||||||
Owned(<T as ToOwned>::Owned),
|
Owned(<T as ToOwned>::Owned),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T: ?Sized + ToOwned> Oco<'a, T> {
|
impl<T: ?Sized + ToOwned> Oco<'_, T> {
|
||||||
/// Converts the value into an owned value.
|
/// Converts the value into an owned value.
|
||||||
pub fn into_owned(self) -> <T as ToOwned>::Owned {
|
pub fn into_owned(self) -> <T as ToOwned>::Owned {
|
||||||
match self {
|
match self {
|
||||||
@@ -339,7 +339,7 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'b, A: ?Sized, B: ?Sized> PartialEq<Oco<'b, B>> for Oco<'a, A>
|
impl<'b, A: ?Sized, B: ?Sized> PartialEq<Oco<'b, B>> for Oco<'_, A>
|
||||||
where
|
where
|
||||||
A: PartialEq<B>,
|
A: PartialEq<B>,
|
||||||
A: ToOwned,
|
A: ToOwned,
|
||||||
@@ -352,7 +352,7 @@ where
|
|||||||
|
|
||||||
impl<T: ?Sized + ToOwned + Eq> Eq for Oco<'_, T> {}
|
impl<T: ?Sized + ToOwned + Eq> Eq for Oco<'_, T> {}
|
||||||
|
|
||||||
impl<'a, 'b, A: ?Sized, B: ?Sized> PartialOrd<Oco<'b, B>> for Oco<'a, A>
|
impl<'b, A: ?Sized, B: ?Sized> PartialOrd<Oco<'b, B>> for Oco<'_, A>
|
||||||
where
|
where
|
||||||
A: PartialOrd<B>,
|
A: PartialOrd<B>,
|
||||||
A: ToOwned,
|
A: ToOwned,
|
||||||
@@ -551,7 +551,7 @@ impl_slice_eq!(['a, 'b, T: PartialEq] (where [T]: ToOwned), Oco<'a, [T]>, &'b [T
|
|||||||
impl_slice_eq!([T: PartialEq] (where [T]: ToOwned), Oco<'_, [T]>, Vec<T>);
|
impl_slice_eq!([T: PartialEq] (where [T]: ToOwned), Oco<'_, [T]>, Vec<T>);
|
||||||
impl_slice_eq!(['a, 'b, T: PartialEq] (where [T]: ToOwned), Oco<'a, [T]>, Cow<'b, [T]>);
|
impl_slice_eq!(['a, 'b, T: PartialEq] (where [T]: ToOwned), Oco<'a, [T]>, Cow<'b, [T]>);
|
||||||
|
|
||||||
impl<'a, 'b> Add<&'b str> for Oco<'a, str> {
|
impl<'b> Add<&'b str> for Oco<'_, str> {
|
||||||
type Output = Oco<'static, str>;
|
type Output = Oco<'static, str>;
|
||||||
|
|
||||||
fn add(self, rhs: &'b str) -> Self::Output {
|
fn add(self, rhs: &'b str) -> Self::Output {
|
||||||
@@ -559,7 +559,7 @@ impl<'a, 'b> Add<&'b str> for Oco<'a, str> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'b> Add<Cow<'b, str>> for Oco<'a, str> {
|
impl<'b> Add<Cow<'b, str>> for Oco<'_, str> {
|
||||||
type Output = Oco<'static, str>;
|
type Output = Oco<'static, str>;
|
||||||
|
|
||||||
fn add(self, rhs: Cow<'b, str>) -> Self::Output {
|
fn add(self, rhs: Cow<'b, str>) -> Self::Output {
|
||||||
@@ -567,7 +567,7 @@ impl<'a, 'b> Add<Cow<'b, str>> for Oco<'a, str> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'b> Add<Oco<'b, str>> for Oco<'a, str> {
|
impl<'b> Add<Oco<'b, str>> for Oco<'_, str> {
|
||||||
type Output = Oco<'static, str>;
|
type Output = Oco<'static, str>;
|
||||||
|
|
||||||
fn add(self, rhs: Oco<'b, str>) -> Self::Output {
|
fn add(self, rhs: Oco<'b, str>) -> Self::Output {
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ impl<T: IntoClass> IntoClass for Option<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> IntoClass for &'a str {
|
impl IntoClass for &str {
|
||||||
type AsyncOutput = Self;
|
type AsyncOutput = Self;
|
||||||
type State = (crate::renderer::types::Element, Self);
|
type State = (crate::renderer::types::Element, Self);
|
||||||
type Cloneable = Self;
|
type Cloneable = Self;
|
||||||
|
|||||||
@@ -308,7 +308,7 @@ impl InnerHtmlValue for Arc<str> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> InnerHtmlValue for &'a str {
|
impl InnerHtmlValue for &str {
|
||||||
type AsyncOutput = Self;
|
type AsyncOutput = Self;
|
||||||
type State = (crate::renderer::types::Element, Self);
|
type State = (crate::renderer::types::Element, Self);
|
||||||
type Cloneable = Self;
|
type Cloneable = Self;
|
||||||
|
|||||||
@@ -606,7 +606,7 @@ impl<'a> IntoStyle for (&'a str, String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "nightly")]
|
#[cfg(feature = "nightly")]
|
||||||
impl<'a, const V: &'static str> IntoStyle for (&'a str, Static<V>) {
|
impl<const V: &'static str> IntoStyle for (&str, Static<V>) {
|
||||||
type AsyncOutput = Self;
|
type AsyncOutput = Self;
|
||||||
type State = ();
|
type State = ();
|
||||||
type Cloneable = (Arc<str>, Static<V>);
|
type Cloneable = (Arc<str>, Static<V>);
|
||||||
|
|||||||
@@ -209,7 +209,6 @@ pub trait DomRenderer: Renderer {
|
|||||||
/// This works in a similar way to `TryFrom`. We implement it as a separate trait
|
/// This works in a similar way to `TryFrom`. We implement it as a separate trait
|
||||||
/// simply so we don't have to create wrappers for the `web_sys` types; it can't be
|
/// simply so we don't have to create wrappers for the `web_sys` types; it can't be
|
||||||
/// implemented on them directly because of the orphan rules.
|
/// implemented on them directly because of the orphan rules.
|
||||||
|
|
||||||
pub trait CastFrom<T>
|
pub trait CastFrom<T>
|
||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
|
|||||||
@@ -197,7 +197,6 @@ where
|
|||||||
/// Renders a view to an out-of-order stream of HTML with branch markers. This can be used to support libraries that diff
|
/// Renders a view to an out-of-order stream of HTML with branch markers. This can be used to support libraries that diff
|
||||||
/// HTML pages against one another, by marking sections of the view that branch to different
|
/// HTML pages against one another, by marking sections of the view that branch to different
|
||||||
/// types with marker comments.
|
/// types with marker comments.
|
||||||
|
|
||||||
fn to_html_stream_out_of_order_branching(self) -> StreamBuilder
|
fn to_html_stream_out_of_order_branching(self) -> StreamBuilder
|
||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ impl<'a> Render for &'a str {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> RenderHtml for &'a str {
|
impl RenderHtml for &str {
|
||||||
type AsyncOutput = Self;
|
type AsyncOutput = Self;
|
||||||
|
|
||||||
const MIN_LENGTH: usize = 0;
|
const MIN_LENGTH: usize = 0;
|
||||||
@@ -102,7 +102,7 @@ impl<'a> RenderHtml for &'a str {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ToTemplate for &'a str {
|
impl ToTemplate for &str {
|
||||||
const TEMPLATE: &'static str = " <!>";
|
const TEMPLATE: &'static str = " <!>";
|
||||||
|
|
||||||
fn to_template(
|
fn to_template(
|
||||||
@@ -120,7 +120,7 @@ impl<'a> ToTemplate for &'a str {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Mountable for StrState<'a> {
|
impl Mountable for StrState<'_> {
|
||||||
fn unmount(&mut self) {
|
fn unmount(&mut self) {
|
||||||
self.node.unmount()
|
self.node.unmount()
|
||||||
}
|
}
|
||||||
@@ -451,7 +451,7 @@ impl<'a> Render for Cow<'a, str> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> RenderHtml for Cow<'a, str> {
|
impl RenderHtml for Cow<'_, str> {
|
||||||
type AsyncOutput = Self;
|
type AsyncOutput = Self;
|
||||||
|
|
||||||
const MIN_LENGTH: usize = 0;
|
const MIN_LENGTH: usize = 0;
|
||||||
@@ -494,7 +494,7 @@ impl<'a> RenderHtml for Cow<'a, str> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ToTemplate for Cow<'a, str> {
|
impl ToTemplate for Cow<'_, str> {
|
||||||
const TEMPLATE: &'static str = <&str as ToTemplate>::TEMPLATE;
|
const TEMPLATE: &'static str = <&str as ToTemplate>::TEMPLATE;
|
||||||
|
|
||||||
fn to_template(
|
fn to_template(
|
||||||
@@ -510,7 +510,7 @@ impl<'a> ToTemplate for Cow<'a, str> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Mountable for CowStrState<'a> {
|
impl Mountable for CowStrState<'_> {
|
||||||
fn unmount(&mut self) {
|
fn unmount(&mut self) {
|
||||||
self.node.unmount()
|
self.node.unmount()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user