mirror of
https://github.com/denoland/deno.git
synced 2025-01-18 03:44:05 -05:00
feat(lint): add --rules flag (#6264)
This commit is contained in:
parent
e9424bf6b5
commit
07bf90779b
3 changed files with 53 additions and 5 deletions
33
cli/flags.rs
33
cli/flags.rs
|
@ -52,6 +52,7 @@ pub enum DenoSubcommand {
|
|||
},
|
||||
Lint {
|
||||
files: Vec<String>,
|
||||
rules: bool,
|
||||
},
|
||||
Repl,
|
||||
Run {
|
||||
|
@ -592,7 +593,8 @@ fn lint_parse(flags: &mut Flags, matches: &clap::ArgMatches) {
|
|||
Some(f) => f.map(String::from).collect(),
|
||||
None => vec![],
|
||||
};
|
||||
flags.subcommand = DenoSubcommand::Lint { files };
|
||||
let rules = matches.is_present("rules");
|
||||
flags.subcommand = DenoSubcommand::Lint { files, rules };
|
||||
}
|
||||
|
||||
fn types_subcommand<'a, 'b>() -> App<'a, 'b> {
|
||||
|
@ -913,6 +915,9 @@ fn lint_subcommand<'a, 'b>() -> App<'a, 'b> {
|
|||
deno lint --unstable
|
||||
deno lint --unstable myfile1.ts myfile2.js
|
||||
|
||||
List available rules:
|
||||
deno lint --unstable --rules
|
||||
|
||||
Ignore diagnostics on the next line by preceding it with an ignore comment and
|
||||
rule name:
|
||||
// deno-lint-ignore no-explicit-any
|
||||
|
@ -929,6 +934,11 @@ Ignore linting a file by adding an ignore comment at the top of the file:
|
|||
",
|
||||
)
|
||||
.arg(unstable_arg())
|
||||
.arg(
|
||||
Arg::with_name("rules")
|
||||
.long("rules")
|
||||
.help("List available rules"),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("files")
|
||||
.takes_value(true)
|
||||
|
@ -1658,7 +1668,8 @@ mod tests {
|
|||
r.unwrap(),
|
||||
Flags {
|
||||
subcommand: DenoSubcommand::Lint {
|
||||
files: vec!["script_1.ts".to_string(), "script_2.ts".to_string()]
|
||||
files: vec!["script_1.ts".to_string(), "script_2.ts".to_string()],
|
||||
rules: false,
|
||||
},
|
||||
unstable: true,
|
||||
..Flags::default()
|
||||
|
@ -1669,7 +1680,23 @@ mod tests {
|
|||
assert_eq!(
|
||||
r.unwrap(),
|
||||
Flags {
|
||||
subcommand: DenoSubcommand::Lint { files: vec![] },
|
||||
subcommand: DenoSubcommand::Lint {
|
||||
files: vec![],
|
||||
rules: false,
|
||||
},
|
||||
unstable: true,
|
||||
..Flags::default()
|
||||
}
|
||||
);
|
||||
|
||||
let r = flags_from_vec_safe(svec!["deno", "lint", "--unstable", "--rules"]);
|
||||
assert_eq!(
|
||||
r.unwrap(),
|
||||
Flags {
|
||||
subcommand: DenoSubcommand::Lint {
|
||||
files: vec![],
|
||||
rules: true
|
||||
},
|
||||
unstable: true,
|
||||
..Flags::default()
|
||||
}
|
||||
|
|
|
@ -64,6 +64,15 @@ pub async fn lint_files(args: Vec<String>) -> Result<(), ErrBox> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn print_rules_list() {
|
||||
let lint_rules = rules::get_recommended_rules();
|
||||
|
||||
println!("Available rules:");
|
||||
for rule in lint_rules {
|
||||
println!(" - {}", rule.code());
|
||||
}
|
||||
}
|
||||
|
||||
fn create_linter() -> Linter {
|
||||
Linter::new(
|
||||
"deno-lint-ignore-file".to_string(),
|
||||
|
|
16
cli/main.rs
16
cli/main.rs
|
@ -316,7 +316,11 @@ async fn install_command(
|
|||
.map_err(ErrBox::from)
|
||||
}
|
||||
|
||||
async fn lint_command(flags: Flags, files: Vec<String>) -> Result<(), ErrBox> {
|
||||
async fn lint_command(
|
||||
flags: Flags,
|
||||
files: Vec<String>,
|
||||
list_rules: bool,
|
||||
) -> Result<(), ErrBox> {
|
||||
let global_state = GlobalState::new(flags)?;
|
||||
|
||||
// TODO(bartlomieju): refactor, it's non-sense to create
|
||||
|
@ -331,6 +335,12 @@ async fn lint_command(flags: Flags, files: Vec<String>) -> Result<(), ErrBox> {
|
|||
)?;
|
||||
|
||||
state.check_unstable("lint");
|
||||
|
||||
if list_rules {
|
||||
lint::print_rules_list();
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
lint::lint_files(files).await
|
||||
}
|
||||
|
||||
|
@ -708,7 +718,9 @@ pub fn main() {
|
|||
} => {
|
||||
install_command(flags, module_url, args, name, root, force).boxed_local()
|
||||
}
|
||||
DenoSubcommand::Lint { files } => lint_command(flags, files).boxed_local(),
|
||||
DenoSubcommand::Lint { files, rules } => {
|
||||
lint_command(flags, files, rules).boxed_local()
|
||||
}
|
||||
DenoSubcommand::Repl => run_repl(flags).boxed_local(),
|
||||
DenoSubcommand::Run { script } => run_command(flags, script).boxed_local(),
|
||||
DenoSubcommand::Test {
|
||||
|
|
Loading…
Add table
Reference in a new issue