gnurr 0.2.1 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3974d42c9302a023ce25057a3a1da60327bcf340
4
- data.tar.gz: 88eeb9666d2c41c0cee93b81832332f2bc92a58d
3
+ metadata.gz: 6a1410c6508df47eca91d6925eef3e939f31d9d7
4
+ data.tar.gz: b86e3ad6538174203af4986a072416a0c6bab212
5
5
  SHA512:
6
- metadata.gz: 61a83db2076c426c1902bfed82b57f07f60673903facc607164c1fbf41b5828395ab495400bc26937f095fb7fbe67e8616766b3666da585a8bb1942d86ae7658
7
- data.tar.gz: 48b66de7de833b1c326100978175486a0b98dc54ca7d05d1afb3de1d913d0d503fa8223ca6ee610d99e18da18828e1e68795dd151de3ba4e3e5b1f21c25f87e4
6
+ metadata.gz: 2c8f93c2e60d0941e95c073d36bbfe0b5db367adb0c401cb3c1ca9e1dba07534b9a18298f0309eeb2e31ef4f3cac02ce67892ebe046a09bd103c0b1bcf98d022
7
+ data.tar.gz: 0f5cec29cb40f13bf85c688f90657ffa3b8459385e99f1c3c272613b5b137403f63ba17534b4cf91eb8bbdfd6b28975f298a49e12da381031a358d2561d996f8
data/README.md CHANGED
@@ -11,24 +11,10 @@ Runs ESLint, SCSS-Lint, HAML-Lint, and Rubocop and returns info relevant to chan
11
11
 
12
12
  ## Installation
13
13
 
14
- **This gem is not yet hosted elsewhere.** To install, clone the repo, then
15
- `cd` into that directory and build the gem.
16
-
17
- ```bash
18
- $ git clone https://github.com/bensaufley/gnurr
19
- $ bundle install
20
-
21
- $ rake install
22
- ```
23
-
24
- If you intend to use [ESLint], be sure to [install that in npm][npm-install].
25
- The other linters – [HAML-Lint], [Rubocop], and [SCSS-Lint] – are all listed as
26
- gem dependencies.
27
-
28
14
  As this gem is built to work with your git diffs, it does also require git.
29
15
  If you've managed to execute the above code, you're already there.
30
16
 
31
- ### Eventually, you'll be able to:
17
+ Make sure you've installed the [Linters](#available-linters) you'd like to use.
32
18
 
33
19
  Add this line to your application's Gemfile:
34
20
 
@@ -72,6 +58,16 @@ Usage: gnurr [options]
72
58
  -h, --help Prints this help
73
59
  ```
74
60
 
61
+ ## Available Linters
62
+
63
+ Below are the currently-supported linters. They are not required by this
64
+ gem and must be independently installed.
65
+
66
+ - [ESLint] for JavaScript ([requires npm][npm-install])
67
+ - [HAML-Lint] (~> 0.16.1) for HAML
68
+ - [Rubocop] (~> 0.47.0) for Ruby
69
+ - [SCSS-Lint] (~> 0.37.2) for SCSS
70
+
75
71
  ## Contributing
76
72
 
77
73
  1. Fork it ( https://github.com/bensaufley/gnurr/fork )
data/bin/gnurr CHANGED
@@ -12,9 +12,26 @@ options = {
12
12
  option_parser = OptionParser.new do |opts|
13
13
  opts.banner = 'Usage: gnurr [options]'
14
14
 
15
- opts.on('-b', '--branch NAME', 'Base branch: branch to diff against (default: master)') { |v| options[:branch] = v }
16
- opts.on('-l', '--linters LIST', 'Linters to use (default: es,haml,ruby,scss (all))') { |v| options[:linters] = v.split(',').map(&:to_sym) }
17
- opts.on('-v', '--verbose', 'Verbose mode (false unless specified)') { options[:verbose] = true }
15
+ opts.on('-b', '--branch NAME',
16
+ 'Base branch: branch to diff against (default: master)') do |v|
17
+ options[:branch] = v
18
+ end
19
+ opts.on('-e', '--expanded',
20
+ 'Show lints for all changed files, not just changed lines (false',
21
+ 'unless specified)') do
22
+ options[:expanded] = true
23
+ end
24
+ opts.on('-l', '--linters LIST',
25
+ 'Linters to use (default: es,haml,ruby,scss (all))') do |v|
26
+ options[:linters] = v.split(',').map(&:to_sym)
27
+ end
28
+ opts.on('-v', '--[no-]verbose', 'Run verbosely') do |v|
29
+ options[:verbose] = v
30
+ end
31
+ opts.on('--version', 'Show version') do
32
+ puts Gnurr::VERSION
33
+ exit
34
+ end
18
35
 
19
36
  opts.on('-h', '--help', 'Prints this help') do
20
37
  puts opts
@@ -19,7 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
  spec.requirements += [
21
21
  'git',
22
- 'npm and eslint for JS linting'
22
+ 'npm and eslint for JS linting',
23
+ 'haml_lint for Ruby linting',
24
+ 'scss_lint for SCSS linting',
25
+ 'rubocop for Ruby linting'
23
26
  ]
24
27
 
25
28
  spec.required_ruby_version = '~> 2.3.0'
@@ -27,8 +30,7 @@ Gem::Specification.new do |spec|
27
30
  spec.add_development_dependency 'bundler', '~> 1.6'
28
31
  spec.add_development_dependency 'rake'
29
32
  spec.add_development_dependency 'git', '~> 1.3.0'
30
- spec.add_development_dependency 'colorize'
31
- spec.add_development_dependency 'haml_lint', '~> 0.16.1'
32
- spec.add_development_dependency 'scss_lint', '~> 0.47.0'
33
- spec.add_development_dependency 'rubocop', '~> 0.37.2'
33
+ spec.add_development_dependency 'pry'
34
+
35
+ spec.add_runtime_dependency 'colorize'
34
36
  end
data/lib/gnurr/cli.rb ADDED
@@ -0,0 +1,83 @@
1
+ module Gnurr
2
+ # For outputting stuff using the command-line tool
3
+ module CLI
4
+ def print_messages
5
+ format_start
6
+ format_messages || format_all_clear
7
+ format_finish
8
+ messages
9
+ end
10
+
11
+ private
12
+
13
+ def format_all_clear
14
+ puts "#{left_bump(2)}#{"#{type.to_s.upcase} all clear! ✔"
15
+ .colorize(color: :light_green)}"
16
+ end
17
+
18
+ def format_messages
19
+ format_line_diffs if @options[:verbose]
20
+ return if messages.empty?
21
+ puts "#{left_bump(2)}Messages:".colorize(mode: :bold)
22
+ messages.each do |filename, messages|
23
+ messages.each do |message|
24
+ puts format_error(filename, message)
25
+ end
26
+ end
27
+ messages
28
+ end
29
+
30
+ def format_error(filename, message)
31
+ left_bump(3) +
32
+ filename.colorize(color: color) + ':' +
33
+ format_line(message) + ' ' +
34
+ format_severity(message) + ' ' +
35
+ message[:message] +
36
+ format_linter(message)
37
+ end
38
+
39
+ def format_finish
40
+ if @options[:verbose]
41
+ puts "#{left_bump}Done linting #{type.to_s.colorize(color)}\n"
42
+ .colorize(mode: :bold)
43
+ else
44
+ puts
45
+ end
46
+ end
47
+
48
+ def format_line(message)
49
+ line = message[:line].to_s
50
+ line += ':' + message[:column].to_s if message[:column]
51
+ line.colorize(:cyan)
52
+ end
53
+
54
+ def format_line_diffs
55
+ diffs = line_diffs
56
+ if diffs.empty?
57
+ puts "#{left_bump(2)}No changes.".colorize(mode: :bold)
58
+ else
59
+ puts "#{left_bump(2)}Lines changed:".colorize(mode: :bold)
60
+ diffs.each do |filename, lines|
61
+ puts "#{left_bump(3)}#{filename}:#{lines.join(', ').colorize(:cyan)}"
62
+ end
63
+ end
64
+ end
65
+
66
+ def format_linter(message)
67
+ message[:linter] ? " (#{message[:linter]})".colorize(:cyan) : ''
68
+ end
69
+
70
+ def format_severity(message)
71
+ if message[:severity] == :error
72
+ '[E]'.colorize(:red)
73
+ else
74
+ '[W]'.colorize(:yellow)
75
+ end
76
+ end
77
+
78
+ def format_start
79
+ puts "#{left_bump}Linting #{type.to_s.colorize(color)}…"
80
+ .colorize(mode: :bold)
81
+ end
82
+ end
83
+ end
@@ -21,18 +21,32 @@ module Gnurr
21
21
 
22
22
  private
23
23
 
24
- def map_errors(file)
25
- [
26
- file['filePath'],
27
- file['messages'].map do |message|
28
- next unless @files[file['filePath'].sub("#{pwd}/", '')].include?(message['line'])
29
- standardize(message, 'column', 'line', 'ruleId', 'message', 'severity', 2)
30
- end.reject(&:nil?)
31
- ]
24
+ def file_path(file)
25
+ file['filePath']
26
+ end
27
+
28
+ def file_messages(file)
29
+ file['messages']
30
+ end
31
+
32
+ def requirements_met?
33
+ !`eslint -v`.nil?
34
+ rescue
35
+ false
32
36
  end
33
37
 
34
38
  def pwd
35
39
  @pwd ||= `printf $(pwd)`
36
40
  end
41
+
42
+ def standardize_message(message)
43
+ {
44
+ column: message['column'],
45
+ line: message['line'],
46
+ linter: message['ruleId'],
47
+ message: message['message'],
48
+ severity: message['severity'] == 2 ? :error : :warning
49
+ }
50
+ end
37
51
  end
38
52
  end
@@ -18,5 +18,11 @@ module Gnurr
18
18
  def filter(file)
19
19
  File.extname(file) == '.haml'
20
20
  end
21
+
22
+ private
23
+
24
+ def requirements_met?
25
+ Gem::Specification.find_all_by_name('haml_lint').any?
26
+ end
21
27
  end
22
28
  end
@@ -0,0 +1,33 @@
1
+ module Gnurr
2
+ # Miscellaneous helper methods for the gem
3
+ module Helper
4
+ def array_to_ranges(array)
5
+ array = array.compact.uniq.sort
6
+ ranges = []
7
+ return ranges if array.empty?
8
+ left = array.first
9
+ right = nil
10
+ array.each do |obj|
11
+ if right && obj != right.succ
12
+ ranges << Range.new(left, right)
13
+ left = obj
14
+ end
15
+ right = obj
16
+ end
17
+ ranges + [Range.new(left, right)]
18
+ end
19
+
20
+ def left_bump(indent = 1)
21
+ '▎'.ljust(indent * 2).colorize(color: color)
22
+ end
23
+
24
+ def log_error(e)
25
+ if @options[:stdout]
26
+ puts "#{'ERROR'.colorize(:red)}: #{e}"
27
+ puts e.backtrace if @options[:verbose]
28
+ else
29
+ warn("Error: #{e}")
30
+ end
31
+ end
32
+ end
33
+ end
data/lib/gnurr/linter.rb CHANGED
@@ -1,51 +1,43 @@
1
+ require 'gnurr/helper'
2
+ require 'gnurr/cli'
3
+
1
4
  module Gnurr
2
5
  # Base linter class from which each linter extends
3
6
  class Linter
7
+ include Gnurr::Helper
8
+ include Gnurr::CLI
9
+
4
10
  def initialize(files, options)
11
+ raise "Dependency not available for #{type}" unless requirements_met?
5
12
  @options = options
6
13
  @files = Hash[files.select { |file, _lines| filter(file) }]
7
14
  @messages = {} if @files.empty?
8
- relevant_messages
9
- end
10
-
11
- def format_errors
12
- puts_line_diffs if @options[:verbose]
13
- return if relevant_messages.empty?
14
- puts "#{left_bump(2)}Messages:".colorize(mode: :bold)
15
- relevant_messages.each do |filename, messages|
16
- messages.each do |message|
17
- puts left_bump(3) + format_error(filename, message)
18
- end
19
- end
20
- relevant_messages
21
- end
22
-
23
- def format_error(filename, message)
24
- filename.colorize(color: color) + ':' +
25
- format_line(message) + ' ' +
26
- format_severity(message) + ' ' +
27
- message[:message] +
28
- format_linter(message)
15
+ rescue => e
16
+ log_error(e)
29
17
  end
30
18
 
31
- def errors(json)
32
- return [] unless json && !json.empty?
33
- json.map { |files| map_errors(files) }
34
- .select { |_f, messages| messages && !messages.empty? }
19
+ def execute
20
+ @options[:stdout] ? print_messages : messages
35
21
  end
36
22
 
37
- def puts_line_diffs
38
- diffs = line_diffs
39
- if diffs.empty?
40
- puts "#{left_bump(2)}No changes.".colorize(mode: :bold)
23
+ def parse_messages(json)
24
+ return [] unless json.any?
25
+ messages = json.map { |files| map_errors(files) }
26
+ .select { |_f, msgs| msgs && msgs.any? }
27
+ if @options[:expanded]
28
+ messages
41
29
  else
42
- puts "#{left_bump(2)}Lines changed:".colorize(mode: :bold)
43
- diffs.each do |filename, lines|
44
- puts "#{left_bump(3)}#{filename}:#{lines.join(', ').colorize(:cyan)}"
45
- end
30
+ filter_messages(messages)
46
31
  end
47
32
  end
48
33
 
34
+ def filter_messages(messages)
35
+ messages.map do |filename, msgs|
36
+ msgs.reject! { |msg| !@files[filename].include?(msg[:line]) }
37
+ msgs.empty? ? nil : [filename, msgs]
38
+ end.reject(&:nil?)
39
+ end
40
+
49
41
  def line_diffs
50
42
  Hash[
51
43
  @files.map do |filename, lines|
@@ -55,68 +47,40 @@ module Gnurr
55
47
  end
56
48
 
57
49
  def relevant_messages
58
- @messages ||= errors(JSON.parse(`git diff --name-only --diff-filter=ACMRTUXB #{@options[:branch]} #{@files.map(&:first).join(' ')} | xargs #{command}`))
50
+ JSON.parse(`git diff --name-only --diff-filter=ACMRTUXB \
51
+ #{@options[:branch]} #{@files.map(&:first).join(' ')} \
52
+ | xargs #{command}`)
59
53
  rescue => e
60
- if @options[:stdout]
61
- puts "#{'ERROR'.colorize(:red)}: #{e}"
62
- puts e.backtrace if @options[:verbose]
63
- else
64
- warn("Error: #{e}")
65
- end
66
- @messages = {}
67
- end
68
-
69
- def pretty_print
70
- puts "#{left_bump}Linting #{@type.to_s.colorize(color)}…".colorize(mode: :bold)
71
- format_errors || puts("#{left_bump(2)}#{"#{@type.to_s.upcase} all clear! ✔".colorize(color: :light_green)}")
72
- puts "#{left_bump}Done linting #{@type.to_s.colorize(color)}\n".colorize(mode: :bold) if @options[:verbose]
54
+ log_error(e)
55
+ {}
73
56
  end
74
57
 
75
58
  private
76
59
 
77
- def array_to_ranges(array)
78
- array = array.compact.uniq.sort
79
- ranges = []
80
- return ranges if array.empty?
81
- left = array.first
82
- right = nil
83
- array.each do |obj|
84
- if right && obj != right.succ
85
- ranges << Range.new(left, right)
86
- left = obj
87
- end
88
- right = obj
89
- end
90
- ranges + [Range.new(left, right)]
91
- end
92
-
93
- def format_line(message)
94
- (message[:line].to_s + (message[:column] ? ':' + message[:column].to_s : '')).colorize(:cyan)
95
- end
96
-
97
- def format_severity(message)
98
- message[:severity] == :error ? '[E]'.colorize(:red) : '[W]'.colorize(:yellow)
60
+ def requirements_met?
61
+ true # Set by subclasses
99
62
  end
100
63
 
101
- def format_linter(message)
102
- message[:linter] ? " (#{message[:linter]})".colorize(:cyan) : ''
103
- end
104
-
105
- def left_bump(indent = 1)
106
- '▎'.ljust(indent * 2).colorize(color: color)
64
+ def map_errors(file)
65
+ [
66
+ file_path(file),
67
+ file_messages(file).map do |message|
68
+ standardize_message(message)
69
+ end.reject(&:nil?)
70
+ ]
107
71
  end
108
72
 
109
- def map_errors(errors)
110
- # Empty: filled by subclasses
73
+ def messages
74
+ @messages ||= parse_messages(relevant_messages)
111
75
  end
112
76
 
113
- def standardize(message, column, line, linter, description, severity, error)
77
+ def standardize_message(message)
114
78
  {
115
- column: message[column],
116
- line: message[line],
117
- linter: message[linter],
118
- message: message[description],
119
- severity: message[severity] == error ? :error : :warning
79
+ column: message['column'],
80
+ line: message['line'],
81
+ linter: message['linter'],
82
+ message: message['message'],
83
+ severity: message['severity'] == 'error' ? :error : :warning
120
84
  }
121
85
  end
122
86
  end
@@ -8,12 +8,13 @@ module Gnurr
8
8
  scss: ScssLinter
9
9
  }.freeze
10
10
 
11
- def initialize(options)
12
- if options[:linters] && !options[:linters].empty?
11
+ def initialize(options = {})
12
+ if options[:linters] && options[:linters].any?
13
13
  options[:linters] = LINTERS.keys & options[:linters]
14
14
  end
15
15
  @options = {
16
16
  branch: 'master',
17
+ expanded: false,
17
18
  linters: LINTERS.keys,
18
19
  stdout: false,
19
20
  verbose: false
@@ -23,32 +24,37 @@ module Gnurr
23
24
  def execute
24
25
  lints = {}
25
26
  @options[:linters].each do |type|
26
- lints[type] = LINTERS[type].new(diffs, @options)
27
- lints[type].pretty_print if @options[:stdout]
27
+ begin
28
+ lints[type] = LINTERS[type].new(git_diffs, @options)
29
+ lints[type].execute
30
+ rescue => e
31
+ lints[type] = e.inspect
32
+ end
28
33
  end
29
34
  lints
30
35
  end
31
36
 
32
37
  private
33
38
 
34
- def extract_line_sets(diffs)
35
- diffs.map do |lines|
36
- nums = lines.match(/^.+\+(?<from>[0-9]+)(,(?<len>[0-9]+))? .+$/)
37
- Range.new(nums[:from].to_i, nums[:from].to_i + nums[:len].to_i)
38
- end.map(&:to_a).flatten
39
+ def git_diffs
40
+ return @diff if @diff
41
+ diff = `git diff #{@options[:branch]} --name-only --diff-filter=ACMRTUXB`
42
+ .split("\n")
43
+ .map { |file| [file, file_diffs(file)] }
44
+ @diff = Hash[diff.select { |_k, v| v && v.any? }]
39
45
  end
40
46
 
41
- def line_diffs(file)
42
- diffs = `git diff --unified=0 #{@options[:branch]} #{file} | egrep '\\+[0-9]+(,[1-9][0-9]*)? '`.split("\n")
43
- extract_line_sets(diffs)
47
+ def file_diffs(file)
48
+ diffs = `git diff --unified=0 #{@options[:branch]} #{file} \
49
+ | egrep '\\+[0-9]+(,[1-9][0-9]*)? '`
50
+ line_diffs(diffs.split("\n"))
44
51
  end
45
52
 
46
- def diffs
47
- return @diff if @diff
48
- diff = `git diff #{@options[:branch]} --name-only --diff-filter=ACMRTUXB`
49
- .split("\n")
50
- .map { |file| [file, line_diffs(file)] }
51
- @diff = Hash[diff.select { |_k, v| v && !v.empty? }]
53
+ def line_diffs(diffs)
54
+ diffs.map do |lines|
55
+ nums = lines.match(/^.+\+(?<from>[0-9]+)(,(?<len>[0-9]+))? .+$/)
56
+ Range.new(nums[:from].to_i, nums[:from].to_i + nums[:len].to_i)
57
+ end.map(&:to_a).flatten
52
58
  end
53
59
  end
54
60
  end
@@ -3,23 +3,21 @@ require 'gnurr/linter'
3
3
  module Gnurr
4
4
  # Class from which Haml and Ruby extend
5
5
  class RubyBaseLinter < Linter
6
- def errors(json)
7
- super(json['files'])
6
+ private
7
+
8
+ def file_path(file)
9
+ file['path']
8
10
  end
9
11
 
10
- private
12
+ def file_messages(file)
13
+ file['offenses']
14
+ end
11
15
 
12
- def map_errors(file)
13
- [
14
- file['path'],
15
- file['offenses'].map do |message|
16
- next unless @files[file['path']].include?(message['location']['line'])
17
- standardize(message)
18
- end.reject(&:nil?)
19
- ]
16
+ def messages
17
+ @messages ||= parse_messages(relevant_messages['files'])
20
18
  end
21
19
 
22
- def standardize(message)
20
+ def standardize_message(message)
23
21
  {
24
22
  column: message['location']['column'], # nil in haml-lint
25
23
  line: message['location']['line'],
@@ -22,5 +22,11 @@ module Gnurr
22
22
  def eligible_files
23
23
  @eligible_files ||= `rubocop -L`.split("\n")
24
24
  end
25
+
26
+ private
27
+
28
+ def requirements_met?
29
+ Gem::Specification.find_all_by_name('rubocop').any?
30
+ end
25
31
  end
26
32
  end
@@ -21,15 +21,26 @@ module Gnurr
21
21
 
22
22
  private
23
23
 
24
- def map_errors(params)
25
- filename, messages = params
26
- [
27
- filename,
28
- messages.map do |message|
29
- next unless @files[filename].include?(message['line'])
30
- standardize(message, 'column', 'line', 'linter', 'reason', 'severity', 'error')
31
- end.reject(&:nil?)
32
- ]
24
+ def file_path(params)
25
+ params[0]
26
+ end
27
+
28
+ def file_messages(params)
29
+ params[1]
30
+ end
31
+
32
+ def requirements_met?
33
+ Gem::Specification.find_all_by_name('scss_lint').any?
34
+ end
35
+
36
+ def standardize_message(message)
37
+ {
38
+ column: message['column'],
39
+ line: message['line'],
40
+ linter: message['linter'],
41
+ message: message['reason'],
42
+ severity: message['severity'] == 'error' ? :error : :warning
43
+ }
33
44
  end
34
45
  end
35
46
  end
data/lib/gnurr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gnurr
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.2.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gnurr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Saufley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-02 00:00:00.000000000 Z
11
+ date: 2016-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.3.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: colorize
56
+ name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,47 +67,19 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: haml_lint
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.16.1
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.16.1
83
- - !ruby/object:Gem::Dependency
84
- name: scss_lint
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.47.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.47.0
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop
70
+ name: colorize
99
71
  requirement: !ruby/object:Gem::Requirement
100
72
  requirements:
101
- - - "~>"
73
+ - - ">="
102
74
  - !ruby/object:Gem::Version
103
- version: 0.37.2
104
- type: :development
75
+ version: '0'
76
+ type: :runtime
105
77
  prerelease: false
106
78
  version_requirements: !ruby/object:Gem::Requirement
107
79
  requirements:
108
- - - "~>"
80
+ - - ">="
109
81
  - !ruby/object:Gem::Version
110
- version: 0.37.2
82
+ version: '0'
111
83
  description: Runs ESLint, SCSS-Lint, HAML-Lint, and Rubocop and returns info relevant
112
84
  to changed lines as reported by git.
113
85
  email:
@@ -123,16 +95,18 @@ files:
123
95
  - README.md
124
96
  - Rakefile
125
97
  - bin/gnurr
98
+ - gnurr.gemspec
126
99
  - lib/gnurr.rb
100
+ - lib/gnurr/cli.rb
127
101
  - lib/gnurr/es_linter.rb
128
102
  - lib/gnurr/haml_linter.rb
103
+ - lib/gnurr/helper.rb
129
104
  - lib/gnurr/linter.rb
130
105
  - lib/gnurr/processor.rb
131
106
  - lib/gnurr/ruby_base_linter.rb
132
107
  - lib/gnurr/ruby_linter.rb
133
108
  - lib/gnurr/scss_linter.rb
134
109
  - lib/gnurr/version.rb
135
- - linte.gemspec
136
110
  homepage: http://github.com/bensaufley/gnurr
137
111
  licenses:
138
112
  - MIT
@@ -154,8 +128,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
128
  requirements:
155
129
  - git
156
130
  - npm and eslint for JS linting
131
+ - haml_lint for Ruby linting
132
+ - scss_lint for SCSS linting
133
+ - rubocop for Ruby linting
157
134
  rubyforge_project:
158
- rubygems_version: 2.4.8
135
+ rubygems_version: 2.2.2
159
136
  signing_key:
160
137
  specification_version: 4
161
138
  summary: Diff-specific linter