rails-erb-lint 1.1.6 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47ed75bff301016846c33cbb1668bf22c18129e6
4
- data.tar.gz: ad5636a84c2e6ec82b6077b5ebb8c6a2883f9c41
3
+ metadata.gz: 8c755024ecaeaabf99ceb33b9c65c52c0ab3cda9
4
+ data.tar.gz: 71d266c0611a778fcc2367e699f3e9861cacdada
5
5
  SHA512:
6
- metadata.gz: 11b4dc46a0492af6d24a8bbfa4cf8346a2407efc2121a8fd09749a8f8b874494a51ec261618d6177891fc9346bdb1b4c6f03f7bc7f8e20aebbcd8632282cf2f3
7
- data.tar.gz: fbd2b1cf99d7ebaac67b7966f8aa4a4e9fa0a0f50c05e9427d93d5af771bae6ae09370488e711559fe036da4dc177c335483b354880b23129e2e05d6d0e39c33
6
+ metadata.gz: 20df5b0a36e0b31c0b6276adccdab2e78394a976c4a78571114ef5ca5103cc0c1d42ec6bec7946c123097dbc9dcf0039df8b165b91de202df8d2debf61f4f6fe
7
+ data.tar.gz: 93d14018a063366b3d74c7941a91a40c92be52b89dbd4106c246f9c0a8f812f71b5cc93604c17e15a76a5d4f0b3f3d18e358b69e182d3bb2d90480154af16f95
@@ -1,13 +1,23 @@
1
1
  require 'action_view'
2
2
 
3
3
  module RailsErbCheck
4
- def self.valid_syntax?(erb)
5
- begin
6
- ActionView::Template::Handlers::Erubis.new(erb).result
7
- rescue SyntaxError
8
- return false
9
- rescue Exception
10
- return true
4
+ class Checker
5
+ attr_reader :error
6
+
7
+ def initialize(erb_path)
8
+ @erb = File.read(erb_path)
9
+ end
10
+
11
+ def valid_syntax?
12
+ begin
13
+ ActionView::Template::Handlers::Erubis.new(@erb).result
14
+ rescue SyntaxError => e
15
+ @error = e
16
+ return false
17
+ rescue Exception
18
+ return true
19
+ end
11
20
  end
21
+
12
22
  end
13
23
  end
@@ -1,7 +1,10 @@
1
- require 'gli'
2
- require 'action_view'
3
- require 'find'
4
- require 'rainbow'
1
+ ['action_view',
2
+ 'find',
3
+ 'gli',
4
+ 'json',
5
+ 'rainbow'].each do |d|
6
+ require d
7
+ end
5
8
 
6
9
  require_relative '../helpers/rails_erb_check'
7
10
 
@@ -9,31 +12,91 @@ include GLI::App
9
12
 
10
13
  program_desc 'A simple lint tool for ERB Rails views.'
11
14
 
15
+ def get_erb_list(path)
16
+ erb_files = []
17
+
18
+ Find.find(path.to_s) do |f|
19
+ next if FileTest.directory?(f)
20
+ if /.*\.erb/.match(File.basename(f))
21
+ erb_files << f
22
+ end
23
+ end
24
+
25
+ erb_files
26
+ end
27
+
28
+ def check_files(erbs, options)
29
+ files = {}
30
+
31
+ erbs.each do |f|
32
+ checker = RailsErbCheck::Checker.new(f)
33
+
34
+ if checker.valid_syntax?
35
+ puts Rainbow("#{f} => valid").green if options[:valid]
36
+ files[f] = { invalid: false }
37
+ else
38
+ puts Rainbow("#{f} => invalid").red
39
+ puts checker.error.message if options[:error]
40
+ files[f] = {
41
+ invalid: true,
42
+ error: checker.error.message,
43
+ backtrace: checker.error.backtrace
44
+ }
45
+ end
46
+ end
47
+
48
+ files
49
+ end
50
+
51
+ def export_json(hash, path)
52
+ File.open(path, 'w') do |file|
53
+ JSON.dump(hash, file)
54
+ end
55
+ end
56
+
12
57
  desc 'Check for syntax errors on views'
13
58
  command :check do |c|
14
- c.switch :verbose, default_value: false
15
- c.action do |global_options, options|
16
- valid = []
17
- invalid = []
18
- erb_files = []
59
+ c.switch [:v, :valid], {
60
+ default_value: false,
61
+ arg_name: 'valid',
62
+ desc: 'print valid files along with invalid files'
63
+ }
64
+
65
+ c.switch [:e, :error], {
66
+ default_value: false,
67
+ arg_name: 'error',
68
+ desc: 'print errors associated with invalid files'
69
+ }
19
70
 
20
- path = Dir.getwd
71
+ c.flag [:j, :json], {
72
+ default_value: nil,
73
+ arg_name: 'json-file',
74
+ type: String,
75
+ desc: 'Export a json file with results, also exports valid files when coupled with -v'
76
+ }
77
+
78
+ c.flag [:p, :path], {
79
+ default_value: Dir.getwd,
80
+ arg_name: 'path',
81
+ type: String,
82
+ desc: 'specify the path that should be used as the root of the check'
83
+ }
84
+
85
+ c.action do |global_options, options|
86
+ path = options[:path]
21
87
  puts Rainbow("Checking for files in current directory: #{path}").green
22
88
 
23
- Find.find(path.to_s) do |f|
24
- next if FileTest.directory?(f)
25
- if /.*\.erb/.match(File.basename(f))
26
- erb_files << f
27
- end
28
- end
89
+ erbs = get_erb_list(path)
90
+ files = check_files(erbs, options)
91
+
92
+ valid = files.reject { |file, info| info[:invalid] }
93
+ invalid = files.select { |file, info| info[:invalid] }
29
94
 
30
- erb_files.each do |f|
31
- if RailsErbCheck.valid_syntax?(File.read(f))
32
- puts Rainbow("#{f} => valid").green if options[:verbose]
33
- valid << f
95
+ if options[:json]
96
+ if options[:valid]
97
+ export_json(files, options[:json])
34
98
  else
35
- puts Rainbow("#{f} => invalid").red
36
- invalid << f
99
+ export_json(invalid, options[:json])
37
100
  end
38
101
  end
39
102
 
@@ -1,3 +1,3 @@
1
1
  module RailsErbLint
2
- VERSION = '1.1.6'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-erb-lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katherine Pe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-02 00:00:00.000000000 Z
11
+ date: 2016-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '4.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: builder
71
85
  requirement: !ruby/object:Gem::Requirement