]>
git.immae.eu Git - github/fretlink/pronto-hlint.git/blob - lib/pronto/eslint-npm.rb
4 class ESLintNpm
< Runner
6 return [] unless @patches
8 @patches.select
{ |patch
| patch
.additions
> 0 }
9 .select
{ |patch
| js_file
?(patch
.new_file_full_path
) }
10 .map
{ |patch
| inspect(patch
) }
15 @_repo_path ||= @patches.first
.repo
.path
17 offences
= run_eslint(patch
)
18 clean_up_eslint_output(offences
)
22 .select
{ |line
| line
.new_lineno
== offence
['line'] }
23 .map
{ |line
| new_message(offence
, line
) }
29 def new_message(offence
, line
)
30 path
= line
.patch
.delta
.new_file
[:path]
33 Message
.new(path
, line
, level
, offence
['message'], nil, self.class)
37 %w(.js
.es6
.js
.es6
).include?(File
.extname(path
))
41 Dir
.chdir(@_repo_path) do
43 `eslint #{Shellwords.escape(patch.new_file_full_path.to_s)} -f json`
48 # rubocop:disable Metrics/LineLength
49 def clean_up_eslint_output(output
)
50 # 1. Filter out offences without a warning or error
51 # 2. Get the messages for that file
52 # 3. Ignore errors without a line number for now
54 .select
{ |offence
| offence
['errorCount'] + offence
['warningCount'] > 0 }
55 .map
{ |offence
| offence
['messages'] }
56 .flatten
.select
{ |offence
| offence
['line'] }