use mingling::{ Program, macros::{chain, dispatcher, entry, program_setup}, }; use crate::{ linter::cmd_mlint::{CMDMinglingLinter, EntryMinglingLinter}, metadata::setup::ResUsingJson, }; pub mod cmd_mlint; pub mod mlint_attr; pub mod mlint_report; #[program_setup] pub fn mingling_linter_setup(program: &mut Program) { program.with_setup(MinglingLinterCommandSetup); } #[program_setup] pub fn mingling_linter_command_setup(program: &mut Program) { program.with_dispatcher(CMDMinglingLinter); program.with_dispatcher(CMDLinterSupportRustAnalyzer); program.with_dispatcher(CMDLinterSupportRustAnalyzerWithClippy); program.with_dispatcher(CMDLinterSupportRustAnalyzerWithCheck); } // Aliases dispatcher!("ra-lint-clippy", CMDLinterSupportRustAnalyzerWithClippy => EntryLinterSupportRustAnalyzerWithClippy ); dispatcher!("ra-lint-check", CMDLinterSupportRustAnalyzerWithCheck => EntryLinterSupportRustAnalyzerWithCheck ); dispatcher!("ra-lint", CMDLinterSupportRustAnalyzer => EntryLinterSupportRustAnalyzer ); #[chain] pub fn handle_ra_lint( _: EntryLinterSupportRustAnalyzer, use_json: &mut ResUsingJson, ) -> EntryMinglingLinter { use_json.using = true; entry!("--message-format=json") } #[chain] pub fn handle_ra_lint_check( _: EntryLinterSupportRustAnalyzerWithCheck, use_json: &mut ResUsingJson, ) -> EntryMinglingLinter { use_json.using = true; entry!("--message-format=json", "--with-checker=cargo,check") } #[chain] pub fn handle_ra_lint_clippy( _: EntryLinterSupportRustAnalyzerWithClippy, use_json: &mut ResUsingJson, ) -> EntryMinglingLinter { use_json.using = true; entry!("--message-format=json", "--with-checker=cargo,clippy") }