aboutsummaryrefslogtreecommitdiff
path: root/mingling_ci/src/task/cmd_clippy_check.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-18 11:09:23 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-18 11:09:23 +0800
commitb1102be2682feb2d2182ead0fcc7ce12f8d0c865 (patch)
tree6bb68f2a79600aa1144d05394b89de9286d385c9 /mingling_ci/src/task/cmd_clippy_check.rs
parent65464029958facf58c886a3ab5d4b9ab176f4e1c (diff)
refactor(mingling_ci): rename build, clippy, and docs commands to -check
suffix
Diffstat (limited to 'mingling_ci/src/task/cmd_clippy_check.rs')
-rw-r--r--mingling_ci/src/task/cmd_clippy_check.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/mingling_ci/src/task/cmd_clippy_check.rs b/mingling_ci/src/task/cmd_clippy_check.rs
new file mode 100644
index 0000000..a0dd46e
--- /dev/null
+++ b/mingling_ci/src/task/cmd_clippy_check.rs
@@ -0,0 +1,50 @@
+use std::ffi::OsString;
+use std::path::Path;
+
+use mingling::{
+ Grouped, Routable,
+ macros::{buffer, command, renderer},
+ res::ResExitCode,
+};
+
+use crate::Next;
+use crate::res::Manifests;
+use crate::task::run::{location, run_parallel_checks};
+
+#[command(node = "clippy-check")]
+pub async fn clippy_check(manifests: &Manifests) -> Next {
+ let tasks = manifests
+ .package_dirs
+ .iter()
+ .map(|(name, path)| (name.clone(), location(path), clippy_args(path)))
+ .collect();
+ let fail_count = run_parallel_checks("Clippy-Check", "Clippy", tasks).await;
+ ResultClippyCheck { fail_count }.to_chain()
+}
+
+/// `cargo clippy --manifest-path <path> -- -D warnings`
+fn clippy_args(path: &Path) -> Vec<OsString> {
+ vec![
+ "cargo".into(),
+ "clippy".into(),
+ "--manifest-path".into(),
+ path.as_os_str().to_os_string(),
+ "--".into(),
+ "-D".into(),
+ "warnings".into(),
+ ]
+}
+
+/// Number of packages that failed clippy.
+#[derive(Grouped)]
+pub struct ResultClippyCheck {
+ pub fail_count: usize,
+}
+
+/// Silently sets a non-zero exit code when any clippy check failed.
+#[renderer(buffer)]
+pub fn render_clippy_check(r: ResultClippyCheck, exit_code: &mut ResExitCode) {
+ if r.fail_count > 0 {
+ exit_code.exit_code = 1;
+ }
+}