summaryrefslogtreecommitdiff
path: root/cli/args
diff options
context:
space:
mode:
Diffstat (limited to 'cli/args')
-rw-r--r--cli/args/flags.rs27
-rw-r--r--cli/args/mod.rs4
2 files changed, 29 insertions, 2 deletions
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 07b60331e..22c7d8e6d 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -199,6 +199,7 @@ pub struct UninstallFlags {
pub struct LintFlags {
pub files: FileFlags,
pub rules: bool,
+ pub fix: bool,
pub maybe_rules_tags: Option<Vec<String>>,
pub maybe_rules_include: Option<Vec<String>>,
pub maybe_rules_exclude: Option<Vec<String>>,
@@ -2006,6 +2007,12 @@ Ignore linting a file by adding an ignore comment at the top of the file:
.defer(|cmd| {
cmd
.arg(
+ Arg::new("fix")
+ .long("fix")
+ .help("Fix any linting errors for rules that support it")
+ .action(ArgAction::SetTrue),
+ )
+ .arg(
Arg::new("rules")
.long("rules")
.help("List available rules")
@@ -3622,6 +3629,7 @@ fn lint_parse(flags: &mut Flags, matches: &mut ArgMatches) {
Some(f) => f.collect(),
None => vec![],
};
+ let fix = matches.get_flag("fix");
let rules = matches.get_flag("rules");
let maybe_rules_tags = matches
.remove_many::<String>("rules-tags")
@@ -3642,6 +3650,7 @@ fn lint_parse(flags: &mut Flags, matches: &mut ArgMatches) {
include: files,
ignore,
},
+ fix,
rules,
maybe_rules_tags,
maybe_rules_include,
@@ -5015,6 +5024,7 @@ mod tests {
include: vec!["script_1.ts".to_string(), "script_2.ts".to_string(),],
ignore: vec![],
},
+ fix: false,
rules: false,
maybe_rules_tags: None,
maybe_rules_include: None,
@@ -5042,6 +5052,7 @@ mod tests {
include: vec!["script_1.ts".to_string(), "script_2.ts".to_string()],
ignore: vec![],
},
+ fix: false,
rules: false,
maybe_rules_tags: None,
maybe_rules_include: None,
@@ -5070,6 +5081,7 @@ mod tests {
include: vec!["script_1.ts".to_string(), "script_2.ts".to_string()],
ignore: vec![],
},
+ fix: false,
rules: false,
maybe_rules_tags: None,
maybe_rules_include: None,
@@ -5085,8 +5097,12 @@ mod tests {
}
);
- let r =
- flags_from_vec(svec!["deno", "lint", "--ignore=script_1.ts,script_2.ts"]);
+ let r = flags_from_vec(svec![
+ "deno",
+ "lint",
+ "--fix",
+ "--ignore=script_1.ts,script_2.ts"
+ ]);
assert_eq!(
r.unwrap(),
Flags {
@@ -5095,6 +5111,7 @@ mod tests {
include: vec![],
ignore: vec!["script_1.ts".to_string(), "script_2.ts".to_string()],
},
+ fix: true,
rules: false,
maybe_rules_tags: None,
maybe_rules_include: None,
@@ -5116,6 +5133,7 @@ mod tests {
include: vec![],
ignore: vec![],
},
+ fix: false,
rules: true,
maybe_rules_tags: None,
maybe_rules_include: None,
@@ -5142,6 +5160,7 @@ mod tests {
include: vec![],
ignore: vec![],
},
+ fix: false,
rules: true,
maybe_rules_tags: Some(svec!["recommended"]),
maybe_rules_include: None,
@@ -5169,6 +5188,7 @@ mod tests {
include: vec![],
ignore: vec![],
},
+ fix: false,
rules: false,
maybe_rules_tags: Some(svec![""]),
maybe_rules_include: Some(svec!["ban-untagged-todo", "no-undef"]),
@@ -5190,6 +5210,7 @@ mod tests {
include: vec!["script_1.ts".to_string()],
ignore: vec![],
},
+ fix: false,
rules: false,
maybe_rules_tags: None,
maybe_rules_include: None,
@@ -5218,6 +5239,7 @@ mod tests {
include: vec!["script_1.ts".to_string()],
ignore: vec![],
},
+ fix: false,
rules: false,
maybe_rules_tags: None,
maybe_rules_include: None,
@@ -5247,6 +5269,7 @@ mod tests {
include: vec!["script_1.ts".to_string()],
ignore: vec![],
},
+ fix: false,
rules: false,
maybe_rules_tags: None,
maybe_rules_include: None,
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index d957b8f80..cb4473ca2 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -391,6 +391,7 @@ pub struct LintOptions {
pub rules: LintRulesConfig,
pub files: FilePatterns,
pub reporter_kind: LintReporterKind,
+ pub fix: bool,
}
impl LintOptions {
@@ -399,6 +400,7 @@ impl LintOptions {
rules: Default::default(),
files: FilePatterns::new_with_base(base),
reporter_kind: Default::default(),
+ fix: false,
}
}
@@ -407,6 +409,7 @@ impl LintOptions {
maybe_lint_flags: Option<LintFlags>,
initial_cwd: &Path,
) -> Result<Self, AnyError> {
+ let fix = maybe_lint_flags.as_ref().map(|f| f.fix).unwrap_or(false);
let mut maybe_reporter_kind =
maybe_lint_flags.as_ref().and_then(|lint_flags| {
if lint_flags.json {
@@ -464,6 +467,7 @@ impl LintOptions {
maybe_rules_include,
maybe_rules_exclude,
),
+ fix,
})
}
}