@@ -3,7 +3,6 @@ extern crate napi;
3
3
#[ macro_use]
4
4
extern crate napi_derive;
5
5
6
- use napi:: JsBoolean ;
7
6
use std:: env;
8
7
use std:: fmt;
9
8
use std:: fs;
@@ -12,10 +11,12 @@ use std::str;
12
11
13
12
use deno_lint:: diagnostic:: LintDiagnostic ;
14
13
use deno_lint:: linter:: LinterBuilder ;
14
+ use deno_lint:: rules:: { get_all_rules, get_recommended_rules} ;
15
+ use deno_lint:: swc_util:: get_default_ts_config;
15
16
use ignore:: overrides:: OverrideBuilder ;
16
17
use ignore:: types:: TypesBuilder ;
17
18
use ignore:: WalkBuilder ;
18
- use napi:: { CallContext , Error , JsBuffer , JsObject , JsString , Module , Result , Status } ;
19
+ use napi:: { CallContext , Error , JsBoolean , JsBuffer , JsObject , JsString , Module , Result , Status } ;
19
20
use termcolor:: Color :: { Ansi256 , Red } ;
20
21
use termcolor:: { Ansi , ColorSpec , WriteColor } ;
21
22
@@ -114,11 +115,19 @@ fn init(js_module: &mut Module) -> Result<()> {
114
115
Ok ( ( ) )
115
116
}
116
117
117
- #[ js_function( 2 ) ]
118
+ #[ js_function( 3 ) ]
118
119
fn lint ( ctx : CallContext ) -> Result < JsObject > {
119
120
let file_name = ctx. get :: < JsString > ( 0 ) ?;
120
121
let source_code = ctx. get :: < JsBuffer > ( 1 ) ?;
121
- let mut linter = LinterBuilder :: default ( ) . build ( ) ;
122
+ let all_rules = ctx. get :: < JsBoolean > ( 2 ) ?;
123
+ let mut linter = LinterBuilder :: default ( )
124
+ . rules ( if all_rules. get_value ( ) ? {
125
+ get_all_rules ( )
126
+ } else {
127
+ get_recommended_rules ( )
128
+ } )
129
+ . syntax ( get_default_ts_config ( ) )
130
+ . build ( ) ;
122
131
123
132
let source_string = str:: from_utf8 ( & source_code) . map_err ( |e| Error {
124
133
status : Status :: StringExpected ,
@@ -148,9 +157,10 @@ fn lint(ctx: CallContext) -> Result<JsObject> {
148
157
Ok ( result)
149
158
}
150
159
151
- #[ js_function( 1 ) ]
160
+ #[ js_function( 2 ) ]
152
161
fn lint_command ( ctx : CallContext ) -> Result < JsBoolean > {
153
162
let __dirname = ctx. get :: < JsString > ( 0 ) ?;
163
+ let enable_all_rules = ctx. get :: < JsBoolean > ( 1 ) ?. get_value ( ) ?;
154
164
let mut has_error = false ;
155
165
let cwd = env:: current_dir ( ) . map_err ( |e| {
156
166
Error :: new (
@@ -210,7 +220,14 @@ fn lint_command(ctx: CallContext) -> Result<JsBoolean> {
210
220
if !p. is_dir ( ) {
211
221
let file_content = fs:: read_to_string ( & p)
212
222
. map_err ( |e| Error :: from_reason ( format ! ( "Read file {:?} failed: {}" , p, e) ) ) ?;
213
- let mut linter = LinterBuilder :: default ( ) . build ( ) ;
223
+ let mut linter = LinterBuilder :: default ( )
224
+ . rules ( if enable_all_rules {
225
+ get_all_rules ( )
226
+ } else {
227
+ get_recommended_rules ( )
228
+ } )
229
+ . syntax ( get_default_ts_config ( ) )
230
+ . build ( ) ;
214
231
let file_diagnostics = linter
215
232
. lint (
216
233
( & p. to_str ( ) )
@@ -227,7 +244,7 @@ fn lint_command(ctx: CallContext) -> Result<JsBoolean> {
227
244
} ) ?;
228
245
for diagnostic in file_diagnostics {
229
246
has_error = true ;
230
- println ! ( "{:? }" , diagnostic) ;
247
+ println ! ( "{}" , format_diagnostic ( & diagnostic) ) ;
231
248
}
232
249
}
233
250
}
0 commit comments