Skip to content

Commit 119f566

Browse files
committed
refactor(oxlint): move --init logic into a own file (#18505)
1 parent dd5d2f6 commit 119f566

4 files changed

Lines changed: 43 additions & 33 deletions

File tree

apps/oxlint/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ mod command;
55
mod init;
66
mod lint;
77
mod lsp;
8+
mod mode;
89
mod output_formatter;
910
mod result;
1011
mod walk;

apps/oxlint/src/lint.rs

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use std::{
22
env,
33
ffi::OsStr,
4-
fs,
54
io::{ErrorKind, Write},
65
path::{Path, PathBuf, absolute},
76
sync::Arc,
@@ -11,7 +10,6 @@ use std::{
1110
use cow_utils::CowUtils;
1211
use ignore::{gitignore::Gitignore, overrides::OverrideBuilder};
1312
use rustc_hash::{FxHashMap, FxHashSet};
14-
use serde_json::Value;
1513

1614
use oxc_diagnostics::{DiagnosticSender, DiagnosticService, GraphicalReportHandler, OxcDiagnostic};
1715
use oxc_linter::{
@@ -64,6 +62,10 @@ impl CliRunner {
6462
..
6563
} = self.options;
6664

65+
if basic_options.init {
66+
return crate::mode::run_init(&self.cwd, stdout);
67+
}
68+
6769
let external_linter = self.external_linter.as_ref();
6870

6971
let mut paths = paths;
@@ -215,11 +217,8 @@ impl CliRunner {
215217
oxlintrc.plugins = Some(plugins);
216218
}
217219

218-
let oxlintrc_for_print = if misc_options.print_config || basic_options.init {
219-
Some(oxlintrc.clone())
220-
} else {
221-
None
222-
};
220+
let oxlintrc_for_print =
221+
if misc_options.print_config { Some(oxlintrc.clone()) } else { None };
223222

224223
let config_builder = match ConfigStoreBuilder::from_oxlintrc(
225224
false,
@@ -254,32 +253,6 @@ impl CliRunner {
254253
print_and_flush_stdout(stdout, "\n");
255254

256255
return CliRunResult::PrintConfigResult;
257-
} else if basic_options.init {
258-
let schema_relative_path = "node_modules/oxlint/configuration_schema.json";
259-
let configuration = if self.cwd.join(schema_relative_path).is_file() {
260-
let mut config_json: Value = serde_json::from_str(&config_file).unwrap();
261-
if let Value::Object(ref mut obj) = config_json {
262-
let mut json_object = serde_json::Map::new();
263-
json_object.insert(
264-
"$schema".to_string(),
265-
format!("./{schema_relative_path}").into(),
266-
);
267-
json_object.extend(obj.clone());
268-
*obj = json_object;
269-
}
270-
serde_json::to_string_pretty(&config_json).unwrap()
271-
} else {
272-
config_file
273-
};
274-
275-
if fs::write(DEFAULT_OXLINTRC, configuration).is_ok() {
276-
print_and_flush_stdout(stdout, "Configuration file created\n");
277-
return CliRunResult::ConfigFileInitSucceeded;
278-
}
279-
280-
// failed case
281-
print_and_flush_stdout(stdout, "Failed to create configuration file\n");
282-
return CliRunResult::ConfigFileInitFailed;
283256
}
284257
}
285258

apps/oxlint/src/mode/init.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
use std::{fs, path::Path};
2+
3+
use oxc_linter::Oxlintrc;
4+
use serde_json::Value;
5+
6+
use crate::{DEFAULT_OXLINTRC, cli::CliRunResult, lint::print_and_flush_stdout};
7+
8+
pub fn run_init(cwd: &Path, stdout: &mut dyn std::io::Write) -> CliRunResult {
9+
let oxlintrc_for_print = serde_json::to_string_pretty(&Oxlintrc::default()).unwrap();
10+
11+
let schema_relative_path = "node_modules/oxlint/configuration_schema.json";
12+
let configuration = if cwd.join(schema_relative_path).is_file() {
13+
let mut config_json: Value = serde_json::from_str(&oxlintrc_for_print).unwrap();
14+
if let Value::Object(ref mut obj) = config_json {
15+
let mut json_object = serde_json::Map::new();
16+
json_object.insert("$schema".to_string(), format!("./{schema_relative_path}").into());
17+
json_object.extend(obj.clone());
18+
*obj = json_object;
19+
}
20+
serde_json::to_string_pretty(&config_json).unwrap()
21+
} else {
22+
oxlintrc_for_print
23+
};
24+
25+
if fs::write(DEFAULT_OXLINTRC, configuration).is_ok() {
26+
print_and_flush_stdout(stdout, "Configuration file created\n");
27+
return CliRunResult::ConfigFileInitSucceeded;
28+
}
29+
30+
// failed case
31+
print_and_flush_stdout(stdout, "Failed to create configuration file\n");
32+
CliRunResult::ConfigFileInitFailed
33+
}

apps/oxlint/src/mode/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
mod init;
2+
3+
pub use init::run_init;

0 commit comments

Comments
 (0)