guard-coffeelint 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62ff247a23d83dcebcd9441ff035ef1403b75e25
4
- data.tar.gz: bbe6c9bd964de31e6788642e8f3c48322932d60f
3
+ metadata.gz: f41e5b08c576ce32fa08bc7823921d5635341b06
4
+ data.tar.gz: 0e233d3b4146f6c3473a9e8d3e663c41ead44a26
5
5
  SHA512:
6
- metadata.gz: a82e630ef16e897bcc032697f5a6172db99845c0a1662b292b1161afd7d349e8b018e48a04b31229094ab685ff2f7bab207edcf10241e5338a347bc20d50a252
7
- data.tar.gz: 7f35bc6ce203e3524adc9f6977c69e150514a25d572a3ec0fe7901408cea93c78e29958caa1cf0e9ad91aae339411c0ebcd04f1b004882c0d251d59b3e7716dc
6
+ metadata.gz: 489610cdb138a55f65303c08027ebdec02a07955899b3b2d8b7964e3fa3659f47c0f88c57936310c082775a069b2531514990a887e32f690533a16cbd69118e6
7
+ data.tar.gz: 62e2bd453ac6f61440af1a2226a7320099eeb5a0d89c6baa73b9961ecfeb19928df20106411699180a18ccf5a48a34ae7464dc4ce8267140c316596907e6c00b
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency 'guard', '~> 2.12.4'
22
- spec.add_dependency 'coffeelint', '~> 1.9.1'
21
+ spec.add_dependency 'guard', '~> 2.0'
22
+ spec.add_dependency 'colorize'
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "rake"
@@ -1,77 +1,96 @@
1
-
2
1
  require 'guard'
3
2
  require 'guard/plugin'
4
- require 'coffeelint'
3
+ require 'JSON'
4
+ require 'colorize'
5
5
 
6
6
  module Guard
7
7
  class Coffeelint < Plugin
8
8
 
9
9
  def initialize(options = {})
10
10
  super
11
- @config_file = options[:config_file] || 'config/coffeelint.json'
11
+ @config_file = options[:config_file]
12
12
  end
13
13
 
14
14
  def start
15
15
  UI.info "Guard::Coffeelint linting against #{@config_file}"
16
16
  end
17
17
 
18
- # Default behaviour on file(s) changes that the Guard plugin watches.
19
- # @param [Array<String>] paths the changes files or paths
20
- # @raise [:task_has_failed] when run_on_change has failed
21
- # @return [Object] the task result
22
- #
23
- def run_on_changes(paths)
24
- # Total errors across all files
25
- error_count = 0
26
-
27
- paths.each do |path|
28
- errors = lint_and_report(path)
29
-
30
- error_count += errors.length
31
- end
32
-
33
- notify(paths, error_count)
18
+ def run_on_additions(paths)
19
+ lint_and_report paths
20
+ end
34
21
 
35
- true
22
+ def run_on_modifications(paths)
23
+ lint_and_report paths
24
+ end
25
+
26
+ def run_all
27
+ lint_and_report
36
28
  end
37
29
 
38
30
  protected
39
31
 
40
- def notify(paths, error_count)
41
- message = if paths.length == 1
42
- "#{error_count} errors in #{paths[0]}"
43
- else
44
- "#{error_count} errors in #{paths.length} files"
45
- end
46
-
32
+ def notify(file_count, error_count)
33
+ msg = summary file_count, error_count
47
34
  image = if error_count > 0
48
35
  :failed
49
36
  else
50
37
  :success
51
38
  end
52
-
53
- Notifier.notify(message, title: "Coffeelint", image: image)
39
+ Notifier.notify(msg, title: "CoffeeLint", image: image)
54
40
  end
55
41
 
56
42
 
57
- def lint_and_report(path)
58
- # This is reporting some bad false-positives
59
- #errors = ::Coffeelint.lint_file(path, config_file: @config_file)
43
+ def lint_and_report(paths = nil)
44
+ command = 'coffeelint -c --reporter raw'
45
+ command += "-f #{@config_file}" if @config_file
46
+ command += if paths && paths.length > 0
47
+ " #{paths.join ' '}"
48
+ else
49
+ ' .'
50
+ end
60
51
 
61
- # This works :|
62
- errors = JSON.parse(`coffeelint --reporter raw -f #{@config_file} #{path}`).values.first
52
+ results = `#{command} 2>&1`
63
53
 
64
- if errors.length > 0
65
- UI.warning "Coffeelint: #{path} has #{errors.length} errors"
54
+ begin
55
+ results = JSON.parse(results)
56
+ rescue JSON::ParserError
57
+ UI.error "Error linting #{paths}"
58
+ return
59
+ end
66
60
 
61
+ results.each do |file, errors|
67
62
  errors.each do |error|
68
- UI.warning "#{error['lineNumber']}: #{error['message']} (#{error['context']})"
63
+ error_letter = error['level'].chars.first.upcase
64
+ error_letter = case error_letter
65
+ when 'E' then error_letter.red
66
+ when 'W' then error_letter.yellow
67
+ else error_letter
68
+ end
69
+
70
+ puts "#{file.cyan}:#{error['lineNumber']}:#{error_letter}" \
71
+ ": #{error['name']}: #{error['message']}. #{error['context']}"
69
72
  end
70
-
71
73
  end
72
74
 
73
- errors
75
+ file_count = results.size
76
+ error_count = results.map { |_, e| e.size }.reduce(:+)
77
+ puts "\n" + summary(file_count, error_count, color: true)
78
+
79
+ notify file_count, error_count
80
+
81
+ throw :task_has_failed unless error_count == 0
74
82
  end
75
83
 
84
+ def summary(file_count, error_count, color: false)
85
+ summary = "#{file_count} files scanned, "
86
+ summary << if error_count > 0
87
+ s = "#{error_count} errors"
88
+ color ? s.red : s
89
+ else
90
+ s = "No errors"
91
+ color ? s.green : s
92
+ end
93
+ summary << " found."
94
+ end
76
95
  end
77
96
  end
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  module CoffeelintVersion
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-coffeelint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Eagar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-06 00:00:00.000000000 Z
11
+ date: 2016-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.12.4
19
+ version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.12.4
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: coffeelint
28
+ name: colorize
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.9.1
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.9.1
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -102,9 +102,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  version: '0'
103
103
  requirements: []
104
104
  rubyforge_project:
105
- rubygems_version: 2.2.0
105
+ rubygems_version: 2.4.5
106
106
  signing_key:
107
107
  specification_version: 4
108
108
  summary: Guard plugin for Coffeelint
109
109
  test_files: []
110
- has_rdoc: