hcl-checker 1.0.1 → 1.0.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: e04f6380f29c819a40b0d84b1e7a49372b8201b5
4
- data.tar.gz: 6ba793e199f075a89f34a8822a5a111679153b91
3
+ metadata.gz: 9e120cd46c80de3764fa4e5842c9fec7472931b9
4
+ data.tar.gz: e0a590bf486fd5e9800a43f4c92bb854002fa88e
5
5
  SHA512:
6
- metadata.gz: 73643697b5caeff32bf49ed9b674f514f2098cdfc0827383ec9c22c9e0a99dad8f4555381f6568e4e44d23927d593a63b1f87bd8d6e58721d059ed8e9d80648b
7
- data.tar.gz: ec8aa1242014e252fe27914b4ca0ebabccce99d972871958d5b7d5ac93d075850864fc9672d8682e51d325cfc2ac4b35d3312f98c35fd94ff39e2354bee86fe6
6
+ metadata.gz: d28e21092462fae8c51f89e59c6c71144932b95703c00e769713a144e762bcaa618b0af7c4d190598c285906582c3bd3f3ef7f0447c20681368048d69f50a334
7
+ data.tar.gz: 010365b5ccfafbeaed12fbfdb52fac26dbc381201ef868b17baff5f68c4f07780c4b917bf9bec5c61b6f7c23b9e4fa6b5cd11b143785517c81dcd0e1a78b3e24
data/Gemfile.lock CHANGED
@@ -1,13 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hcl-checker (1.0.1)
4
+ hcl-checker (1.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  diff-lcs (1.3)
10
+ filesize (0.1.1)
11
+ jsobfu (0.4.2)
12
+ rkelly-remix
13
+ json (2.0.4)
14
+ metasm (1.0.3)
15
+ mini_portile2 (2.3.0)
16
+ nokogiri (1.8.2)
17
+ mini_portile2 (~> 2.3.0)
18
+ racc (1.4.14)
10
19
  rake (10.4.2)
20
+ rb-readline (0.5.5)
21
+ rex (2.0.12)
22
+ filesize (~> 0)
23
+ jsobfu (~> 0)
24
+ json (~> 2)
25
+ metasm (~> 1)
26
+ nokogiri (~> 1)
27
+ rb-readline (~> 0)
28
+ rexical (1.0.5)
29
+ rkelly-remix (0.0.7)
11
30
  rspec (3.7.0)
12
31
  rspec-core (~> 3.7.0)
13
32
  rspec-expectations (~> 3.7.0)
@@ -28,7 +47,10 @@ PLATFORMS
28
47
  DEPENDENCIES
29
48
  bundler (~> 1.16)
30
49
  hcl-checker!
50
+ racc (= 1.4.14)
31
51
  rake (~> 10.0)
52
+ rex (= 2.0.12)
53
+ rexical (= 1.0.5)
32
54
  rspec (~> 3.0)
33
55
 
34
56
  BUNDLED WITH
data/README.md CHANGED
@@ -33,6 +33,7 @@ hcl_string = 'provider "aws" {
33
33
  secret_key = "${var.aws_secret_key}"
34
34
  }
35
35
 
36
+ # This is a awesome comment
36
37
  resource "aws_vpc" "default" {
37
38
  cidr_block = "10.0.0.0/16"
38
39
  enable_dns_hostnames = true
@@ -57,6 +58,13 @@ You can parse the `hcl_string` into a `Hash` with `parse` method.
57
58
  => {"provider"=>{"aws"=>{"region"=>"${var.aws_region}", "access_key"=>"${var.aws_access_key}", "secret_key"=>"${var.aws_secret_key}"}}, "resource"=>{"aws_vpc"=>{"default"=>{"cidr_block"=>"10.0.0.0/16", "enable_dns_hostnames"=>true, "tags"=>{"Name"=>"Event Store VPC"}}}}}
58
59
  ```
59
60
 
61
+ If after a `parse` you got `false` you can check `last_error` with:
62
+
63
+ ```
64
+ 2.4.2 :063 > HCL::Checker.last_error
65
+ => "Parse error at \"eec8b16c-ee89-4ea0-bdcc-d094300a42e8\" , (invalid token: ,)"
66
+ ```
67
+
60
68
  ## Development
61
69
 
62
70
  After checking out the repo, run `bin/setup` to install dependencies. Then, run
@@ -69,12 +77,14 @@ release a new version, update the version number in `version.rb`, and then run
69
77
  git commits and tags, and push the `.gem` file to
70
78
  [rubygems.org](https://rubygems.org).
71
79
 
72
- ### Lexer
73
- - Built using the `rexical` library (https://github.com/tenderlove/rexical)
74
-
75
- ### Parser
76
- - Built using the `racc` library (https://github.com/tenderlove/racc)
80
+ ### Building grammar
77
81
 
82
+ ```
83
+ $ bundle exec rake build_grammar
84
+ Building Lexer....done
85
+ Building Parser....done
86
+ ```
87
+
78
88
  ## Contributing
79
89
 
80
90
  Bug reports and pull requests are welcome on GitHub at
data/Rakefile CHANGED
@@ -7,12 +7,13 @@ RSpec::Core::RakeTask.new do |c|
7
7
  c.rspec_opts = options
8
8
  end
9
9
 
10
- desc "Generate HCL Lexer"
11
- task :lexer do
10
+ desc "Generate Grammar files for HCL"
11
+ task :build_grammar do
12
+ print 'Building Lexer'
12
13
  `rex ./assets/lexer.rex -o ./lib/hcl/lexer.rb`
14
+ print "....done\n"
15
+ print 'Building Parser'
16
+ `racc ./assets/parse.y -o ./lib/hcl/parser.rb`
17
+ print "....done\n\n"
13
18
  end
14
19
 
15
- desc "Generate HCL Parser"
16
- task :parser do
17
- `racc ./assets/parse.y -o ./lib/parser.rb`
18
- end
data/assets/lexer.rex CHANGED
@@ -99,7 +99,7 @@ inner
99
99
  next
100
100
  end
101
101
 
102
- result += text
102
+ result += text.to_s
103
103
  end until nested == 0 && text =~ %r{\"\z}
104
104
 
105
105
  result.chop
data/assets/parse.y CHANGED
@@ -135,7 +135,8 @@ require_relative './lexer'
135
135
 
136
136
 
137
137
  def on_error(error_token_id, error_value, value_stack)
138
- header = "parse error found on value: #{error_value}"
138
+ error_message = value_stack.to_s.split(',').last.gsub(']', '')
139
+ header = "Parse error at #{error_message} #{error_value} (invalid token: #{error_value})"
139
140
  raise Racc::ParseError, header
140
141
  end
141
142
 
data/hcl-checker.gemspec CHANGED
@@ -21,4 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'bundler', '~> 1.16'
22
22
  spec.add_development_dependency 'rake', '~> 10.0'
23
23
  spec.add_development_dependency 'rspec', '~> 3.0'
24
+ spec.add_development_dependency 'racc', '1.4.14'
25
+ spec.add_development_dependency 'rex', '2.0.12'
26
+ spec.add_development_dependency 'rexical', '1.0.5'
27
+
24
28
  end
@@ -1,5 +1,5 @@
1
1
  module HCL
2
2
  module Checker
3
- VERSION = '1.0.1'
3
+ VERSION = '1.0.2'
4
4
  end
5
5
  end
data/lib/hcl/checker.rb CHANGED
@@ -4,6 +4,10 @@ require_relative 'parser'
4
4
 
5
5
  module HCL
6
6
  module Checker
7
+ class << self
8
+ attr_accessor :last_error
9
+ end
10
+
7
11
  def self.valid?(value)
8
12
  ret = HCLParser.new.parse(value)
9
13
  return true if ret.is_a? Hash
@@ -14,8 +18,11 @@ module HCL
14
18
 
15
19
  def self.parse(value)
16
20
  HCLParser.new.parse(value)
21
+ rescue Racc::ParseError => e
22
+ self.last_error = e.message
23
+ return false
17
24
  rescue
18
- nil
25
+ false
19
26
  end
20
27
  end
21
28
  end
data/lib/hcl/lexer.rb CHANGED
@@ -159,7 +159,7 @@ class HCLLexer
159
159
  result += text.chop + @ss.getch
160
160
  next
161
161
  end
162
- result += text
162
+ result += text.to_s
163
163
  end until nested == 0 && text =~ %r{\"\z}
164
164
  result.chop
165
165
  end
data/lib/hcl/parser.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.4.12
3
+ # This file is automatically generated by Racc 1.4.14
4
4
  # from Racc grammer file "".
5
5
  #
6
6
 
@@ -34,7 +34,8 @@ module_eval(<<'...end parse.y/module_eval...', 'parse.y', 115)
34
34
 
35
35
 
36
36
  def on_error(error_token_id, error_value, value_stack)
37
- header = "parse error found on value: #{error_value}"
37
+ error_message = value_stack.to_s.split(',').last.gsub(']', '')
38
+ header = "Parse error at #{error_message} #{error_value} (invalid token: #{error_value})"
38
39
  raise Racc::ParseError, header
39
40
  end
40
41
 
@@ -69,20 +70,20 @@ module_eval(<<'...end parse.y/module_eval...', 'parse.y', 115)
69
70
 
70
71
  racc_action_table = [
71
72
  20, 26, 25, 36, 26, 25, 5, 21, 6, 13,
72
- 33, 24, 35, 26, 25, 30, 5, 12, 6, 33,
73
- 5, 34, 6, -9, 16, 28, 17, 5, 13, 6,
74
- -8, 10, 18 ]
73
+ 33, 24, 35, 26, 25, 30, 5, 18, 6, 33,
74
+ 5, 28, 6, 12, 16, 34, 17, 5, 13, 6,
75
+ -9, -8, 10 ]
75
76
 
76
77
  racc_action_check = [
77
- 12, 12, 12, 29, 24, 24, 3, 12, 3, 12,
78
- 24, 12, 29, 36, 36, 24, 27, 7, 27, 36,
79
- 13, 27, 13, 6, 9, 13, 9, 0, 9, 0,
80
- 5, 1, 10 ]
78
+ 12, 12, 12, 29, 24, 24, 0, 12, 0, 12,
79
+ 24, 12, 29, 36, 36, 24, 13, 10, 13, 36,
80
+ 27, 13, 27, 7, 9, 27, 9, 3, 9, 3,
81
+ 6, 5, 1 ]
81
82
 
82
83
  racc_action_pointer = [
83
- 20, 31, nil, -1, nil, 22, 15, 9, nil, 17,
84
- 32, nil, -2, 13, nil, nil, nil, nil, nil, nil,
85
- nil, nil, nil, nil, 1, nil, nil, 9, nil, -2,
84
+ -1, 32, nil, 20, nil, 23, 22, 15, nil, 17,
85
+ 17, nil, -2, 9, nil, nil, nil, nil, nil, nil,
86
+ nil, nil, nil, nil, 1, nil, nil, 13, nil, -2,
86
87
  nil, nil, nil, nil, nil, nil, 10, nil ]
87
88
 
88
89
  racc_action_default = [
@@ -92,18 +93,18 @@ racc_action_default = [
92
93
  -21, -22, -25, -26, -6, -20, -24, -23 ]
93
94
 
94
95
  racc_goto_table = [
95
- 11, 3, 14, 31, 19, 22, 2, 23, 15, 29,
96
- 1, nil, nil, nil, 27, 37, nil, nil, nil, nil,
96
+ 11, 3, 14, 31, 15, 22, 29, 19, 2, 1,
97
+ 23, nil, nil, nil, 27, 37, nil, nil, nil, nil,
97
98
  nil, nil, nil, nil, 11 ]
98
99
 
99
100
  racc_goto_check = [
100
- 4, 3, 5, 12, 7, 5, 2, 8, 9, 11,
101
- 1, nil, nil, nil, 3, 12, nil, nil, nil, nil,
101
+ 4, 3, 5, 12, 9, 5, 11, 7, 2, 1,
102
+ 8, nil, nil, nil, 3, 12, nil, nil, nil, nil,
102
103
  nil, nil, nil, nil, 4 ]
103
104
 
104
105
  racc_goto_pointer = [
105
- nil, 10, 6, 1, -3, -7, nil, -8, -5, -1,
106
- nil, -15, -21 ]
106
+ nil, 9, 8, 1, -3, -7, nil, -5, -2, -5,
107
+ nil, -18, -21 ]
107
108
 
108
109
  racc_goto_default = [
109
110
  nil, nil, nil, nil, 4, nil, 7, 32, nil, 8,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hcl-checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcelo Castellani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-30 00:00:00.000000000 Z
11
+ date: 2018-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,48 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: racc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.4.14
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.4.14
69
+ - !ruby/object:Gem::Dependency
70
+ name: rex
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 2.0.12
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 2.0.12
83
+ - !ruby/object:Gem::Dependency
84
+ name: rexical
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 1.0.5
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.5
55
97
  description: Hashicorp Configuration Language parser and checker for Ruby
56
98
  email:
57
99
  - marcelo.castellani@totvs.com.br