pronto-eslint_npm 0.8.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +6 -3
- data/lib/pronto/eslint_npm.rb +33 -21
- data/lib/pronto/eslint_npm/version.rb +3 -1
- metadata +11 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fd8169a6b57fa0d02abb4ad5982083602d09ad1fae1062e5f62c9e945687e992
|
4
|
+
data.tar.gz: 33b07b0284e78d6b766aca7bd9a3dbb4228be7159d82a894d37dbfdf9b1f51b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebb5734cc56973eba83666cec7a4ff2664327609aa1716a67d880aa2f0e1e30a98cbe43558f2198a3f35b1e95df7da39e9eec8907dbb71ef653bf24522aa22ef
|
7
|
+
data.tar.gz: 5f1be9eaef644cce6e06f60e3d36459ccb84d1fd1f8346b6b2d25a3afd8d6aeb678a555e17c985193ba76bf11649f7703153b28fe4572d321895e68ce3a4342a
|
data/README.md
CHANGED
@@ -3,12 +3,13 @@
|
|
3
3
|
[](https://codeclimate.com/github/doits/pronto-eslint_npm)
|
4
4
|
[](https://travis-ci.org/doits/pronto-eslint_npm)
|
5
5
|
[](http://badge.fury.io/rb/pronto-eslint_npm)
|
6
|
-
[](https://gemnasium.com/doits/pronto-eslint_npm)
|
7
6
|
|
8
7
|
Pronto runner for [ESlint](http://eslint.org), pluggable linting utility for JavaScript and JSX. [What is Pronto?](https://github.com/mmozuras/pronto)
|
9
8
|
|
10
9
|
Uses official eslint executable installed by `npm` in contrast to [pronto-eslint][pronto-eslint].
|
11
10
|
|
11
|
+
:exclamation:**Not maintained anymore**:exclamation:: This gem is not maintened anymore and will receive no updates. If you want to step in as a maintainer, please open an issue to discuss it.
|
12
|
+
|
12
13
|
[pronto-eslint]: https://github.com/mmozuras/pronto-eslint
|
13
14
|
|
14
15
|
## Prerequisites
|
@@ -34,12 +35,14 @@ Following options are available:
|
|
34
35
|
| Option | Meaning | Default |
|
35
36
|
| ----------------- | ---------------------------------------------------------------------------------------- | ----------------------------------- |
|
36
37
|
| eslint_executable | ESLint executable to call. | `eslint` (calls `eslint` in `PATH`) |
|
37
|
-
| files_to_lint | What files to lint. Absolute path of offending file will be matched against this Regexp. | `(\.js
|
38
|
+
| files_to_lint | What files to lint. Absolute path of offending file will be matched against this Regexp. | `(\.js\|\.es6)$` |
|
39
|
+
| cmd_line_opts | Command line options to pass to eslint when running | '' |
|
38
40
|
|
39
41
|
Example configuration to call custom eslint executable and only lint files ending with `.my_custom_extension`:
|
40
42
|
|
41
43
|
```yaml
|
42
|
-
# .pronto_eslint_npm.
|
44
|
+
# .pronto_eslint_npm.yml
|
43
45
|
eslint_executable: '/my/custom/node/path/.bin/eslint'
|
44
46
|
files_to_lint: '\.my_custom_extension$'
|
47
|
+
cmd_line_opts: '--ext .html,.js,.es6'
|
45
48
|
```
|
data/lib/pronto/eslint_npm.rb
CHANGED
@@ -1,33 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pronto'
|
2
4
|
require 'shellwords'
|
3
5
|
|
4
6
|
module Pronto
|
5
7
|
class ESLintNpm < Runner
|
6
8
|
CONFIG_FILE = '.pronto_eslint_npm.yml'.freeze
|
7
|
-
CONFIG_KEYS = %w
|
9
|
+
CONFIG_KEYS = %w[eslint_executable files_to_lint cmd_line_opts].freeze
|
10
|
+
SEVERITY_LEVELS = [nil, :warning, :error].freeze
|
8
11
|
|
9
|
-
attr_writer :eslint_executable
|
12
|
+
attr_writer :eslint_executable, :cmd_line_opts
|
10
13
|
|
11
14
|
def eslint_executable
|
12
|
-
@eslint_executable || 'eslint'
|
15
|
+
@eslint_executable || 'eslint'
|
13
16
|
end
|
14
17
|
|
15
18
|
def files_to_lint
|
16
19
|
@files_to_lint || /(\.js|\.es6)$/
|
17
20
|
end
|
18
21
|
|
22
|
+
def cmd_line_opts
|
23
|
+
@cmd_line_opts || ''
|
24
|
+
end
|
25
|
+
|
19
26
|
def files_to_lint=(regexp)
|
20
27
|
@files_to_lint = regexp.is_a?(Regexp) && regexp || Regexp.new(regexp)
|
21
28
|
end
|
22
29
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
26
|
-
|
30
|
+
def config_options
|
31
|
+
@config_options ||=
|
32
|
+
begin
|
33
|
+
config_file = File.join(repo_path, CONFIG_FILE)
|
34
|
+
File.exist?(config_file) && YAML.load_file(config_file) || {}
|
35
|
+
end
|
36
|
+
end
|
27
37
|
|
28
|
-
|
29
|
-
|
30
|
-
|
38
|
+
def read_config
|
39
|
+
config_options.each do |key, val|
|
40
|
+
next unless CONFIG_KEYS.include?(key.to_s)
|
41
|
+
send("#{key}=", val)
|
31
42
|
end
|
32
43
|
end
|
33
44
|
|
@@ -46,23 +57,23 @@ module Pronto
|
|
46
57
|
private
|
47
58
|
|
48
59
|
def repo_path
|
49
|
-
@
|
60
|
+
@repo_path ||= @patches.first.repo.path
|
50
61
|
end
|
51
62
|
|
52
63
|
def inspect(patch)
|
64
|
+
lines = patch.added_lines
|
53
65
|
offences = run_eslint(patch)
|
54
66
|
clean_up_eslint_output(offences)
|
55
67
|
.map do |offence|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
.map { |line| new_message(offence, line) }
|
68
|
+
range = offence['line']..(offence['endLine'] || offence['line'])
|
69
|
+
line = lines.select { |line| range.cover?(line.new_lineno) }.last
|
70
|
+
new_message(offence, line) if line
|
60
71
|
end
|
61
72
|
end
|
62
73
|
|
63
74
|
def new_message(offence, line)
|
64
|
-
path
|
65
|
-
level = :warning
|
75
|
+
path = line.patch.delta.new_file[:path]
|
76
|
+
level = SEVERITY_LEVELS.fetch(offence['severity'], :warning)
|
66
77
|
|
67
78
|
Message.new(path, line, level, offence['message'], nil, self.class)
|
68
79
|
end
|
@@ -73,13 +84,14 @@ module Pronto
|
|
73
84
|
|
74
85
|
def run_eslint(patch)
|
75
86
|
Dir.chdir(repo_path) do
|
76
|
-
|
77
|
-
JSON.parse(
|
78
|
-
`#{eslint_executable} #{escaped_file_path} -f json`
|
79
|
-
)
|
87
|
+
JSON.parse `#{eslint_command_line(patch.new_file_full_path.to_s)}`
|
80
88
|
end
|
81
89
|
end
|
82
90
|
|
91
|
+
def eslint_command_line(path)
|
92
|
+
"#{eslint_executable} #{cmd_line_opts} #{Shellwords.escape(path)} -f json"
|
93
|
+
end
|
94
|
+
|
83
95
|
def clean_up_eslint_output(output)
|
84
96
|
# 1. Filter out offences without a warning or error
|
85
97
|
# 2. Get the messages for that file
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pronto-eslint_npm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Doits
|
8
8
|
- Mindaugas Mozūras
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-05-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pronto
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.
|
20
|
+
version: 0.11.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.
|
27
|
+
version: 0.11.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,7 +59,7 @@ dependencies:
|
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '3.4'
|
62
|
-
description:
|
62
|
+
description:
|
63
63
|
email: markus.doits@gmail.com
|
64
64
|
executables: []
|
65
65
|
extensions: []
|
@@ -71,11 +71,11 @@ files:
|
|
71
71
|
- README.md
|
72
72
|
- lib/pronto/eslint_npm.rb
|
73
73
|
- lib/pronto/eslint_npm/version.rb
|
74
|
-
homepage:
|
74
|
+
homepage: https://github.com/doits/pronto-eslint_npm
|
75
75
|
licenses:
|
76
76
|
- MIT
|
77
77
|
metadata: {}
|
78
|
-
post_install_message:
|
78
|
+
post_install_message:
|
79
79
|
rdoc_options: []
|
80
80
|
require_paths:
|
81
81
|
- lib
|
@@ -83,7 +83,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
83
83
|
requirements:
|
84
84
|
- - ">="
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: 2.
|
86
|
+
version: 2.3.0
|
87
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - ">="
|
@@ -91,9 +91,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
version: '0'
|
92
92
|
requirements:
|
93
93
|
- eslint (in PATH)
|
94
|
-
|
95
|
-
|
96
|
-
signing_key:
|
94
|
+
rubygems_version: 3.2.15
|
95
|
+
signing_key:
|
97
96
|
specification_version: 4
|
98
97
|
summary: Pronto runner for ESLint, pluggable linting utility for JavaScript and JSX
|
99
98
|
test_files: []
|