puppet-itemize 0.0.2 → 0.0.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
  SHA256:
3
- metadata.gz: 1625c1cacf7bc9c0373f02357fdef0d912ed642896c30c0fd372a38f84116924
4
- data.tar.gz: 7dc10c68119882e62bb4587361a4d1f6b71ee2b94bd36a03af43c4f821863eee
3
+ metadata.gz: 422fdbc454ed30e9fbca344080e6d4382e55f5332a1c6e3aa156d9f2f5651da3
4
+ data.tar.gz: 51a10a2c4b77efc62111d15e2ad074cdb1e2c584d6b7aea5d4e5ca30991540c8
5
5
  SHA512:
6
- metadata.gz: c18bb2c71c6ba444d2f11177c273a3ea7b7872ac1999c91d6d044ed90b9a80eb9fb3032ffbbeb6a3f6241bfbe496065f321af1292dee8c03eac8e2c353b642e5
7
- data.tar.gz: ad95bc731049ae6d803e4961ab2cd1979e06c9adfb71e2d4a76c81c8ae8e0aa309205a99e6daa14c723bad30cfea83319eb7f811244f4d6299d0730adda7667b
6
+ metadata.gz: 4b003d8ff8e2bec6e60334259ec9d8db6c1e5224ddaaec46df38cbf99dd62a9f9e7289f391198559df4ac3d95139fb1665b56328987d54bce0e72df57202d7dd
7
+ data.tar.gz: 800ee84189d7f936e709e183a08870c8267984a8d8f488a8a0f1f0aff061f58cbf294a4168782c08d68c9420db965b750123a4d4592ebceda4fbf9af22b65715
@@ -1,3 +1,12 @@
1
+ # v0.0.3
2
+
3
+ * Parse more syntax edge cases without exploding. We can't evaluate everything
4
+ because it's pre-compilation, but do what we can or just use a marker token.
5
+ * Only print out undeclared module warnings once per module.
6
+ * Added the option for debug logging of files as they're evaluated.
7
+ * Improved the external element detection logic.
8
+
9
+
1
10
  # v0.0.2
2
11
 
3
12
  * Add namespace validation. This will now warn you if you're using elements from
@@ -0,0 +1,51 @@
1
+ # Update the interpolated string token to return a composed value string so we
2
+ # don't have to special case its handling. Because this is pre-compilation,
3
+ # we cannot resolve variables. So just tag w/ a marker
4
+ class Puppet::Pops::Model::ConcatenatedString
5
+ def value
6
+ segments.map {|t| t.value rescue nil }.join('<??>')
7
+ end
8
+ end
9
+
10
+ # when a resource declaration title is just a variable
11
+ class Puppet::Pops::Model::VariableExpression
12
+ def value
13
+ '<??>'
14
+ end
15
+ end
16
+
17
+ # when a resource reference is used
18
+ class Puppet::Pops::Model::AccessExpression
19
+ def value
20
+ keys.map {|t| t.value rescue nil }.join
21
+ end
22
+ end
23
+
24
+ # when math (like a set operation) is used to generate a list of classes to use.
25
+ class Puppet::Pops::Model::ArithmeticExpression
26
+ def value
27
+ left_expr.value + operator + right_expr.value
28
+ end
29
+ end
30
+
31
+ # when a postfix method generates a list of classes to declare
32
+ class Puppet::Pops::Model::CallMethodExpression
33
+ def value
34
+ '<??>'
35
+ end
36
+ end
37
+
38
+ # when a function generates the name of a class to declare
39
+ class Puppet::Pops::Model::CallNamedFunctionExpression
40
+ def value
41
+ "#{functor_expr.value}(#{arguments.map {|a| a.value rescue nil }.join(',')})"
42
+ end
43
+ end
44
+
45
+ # When someone uses a resource reference to ... declare a class with a default expression
46
+ # like ... who even does that?
47
+ class Puppet::Pops::Model::LiteralDefault
48
+ def value
49
+ '<??>'
50
+ end
51
+ end
@@ -1,6 +1,7 @@
1
1
  require 'puppet'
2
2
  require 'puppet/parser'
3
3
  require 'puppet/util/logging'
4
+ require 'puppet_x/binford2k/itemize/monkeypatch'
4
5
 
5
6
  class Puppet_X::Binford2k::Itemize::Parser
6
7
  attr_reader :results
@@ -63,7 +64,14 @@ class Puppet_X::Binford2k::Itemize::Parser
63
64
  # for classes declared as resource-style, we have to traverse back up the
64
65
  # tree to see if this resource body was declared by a class resource.
65
66
  o.bodies.each do |klass|
66
- record(:classes, klass.title.value)
67
+ case klass.title
68
+ when Puppet::Pops::Model::LiteralList
69
+ klass.title.values.each do |item|
70
+ record(:classes, item.value)
71
+ end
72
+ else
73
+ record(:classes, klass.title.value)
74
+ end
67
75
  end
68
76
  else
69
77
  record(:types, resource_name)
@@ -75,18 +83,11 @@ class Puppet_X::Binford2k::Itemize::Parser
75
83
  case function_name
76
84
  when 'include'
77
85
  o.arguments.each do |klass|
78
- case klass
79
- when Puppet::Pops::Model::ConcatenatedString
80
- # Because this is pre-compilation, we cannot resolve variables. So just tag w/ a marker
81
- # TODO: This should go somewhere else, but I'm not entirely sure where just now.
82
- record(:classes, klass.segments.map {|t| t.value rescue nil }.join('<??>'))
83
- else
84
- record(:classes, klass.value)
85
- end
86
+ record(:classes, klass.value)
86
87
  end
87
88
 
88
89
  when 'create_resources'
89
- Puppet.warning 'create_resources detected. Please update to use iteration instead.'
90
+ Puppet.warn_once(:dependency, 'create_resources', 'create_resources detected. Please update to use iteration instead.', :default, :default)
90
91
  record(:functions, function_name)
91
92
  record(:types, o.arguments.first.value)
92
93
 
@@ -18,8 +18,7 @@ class Puppet_X::Binford2k::Itemize::Runner
18
18
 
19
19
  if path
20
20
  @metadata = JSON.parse(File.read(File.expand_path("#{path}/../metadata.json")))
21
- author = @metadata['author']
22
- @namespace = @metadata['name'].sub(/^#{author}-/, '')
21
+ @namespace = @metadata['name'].split(/[-\/]/).last
23
22
 
24
23
  # we can only use the module name part of this, not the user namespace
25
24
  @dependencies = @metadata['dependencies'].map do |dep|
@@ -50,6 +49,7 @@ class Puppet_X::Binford2k::Itemize::Runner
50
49
 
51
50
  def run!
52
51
  @paths.each do |path|
52
+ Puppet.debug "Itemizing #{path}"
53
53
  parser = Puppet_X::Binford2k::Itemize::Parser.new(path, @options).parse!
54
54
  parser.results.each do |kind, counts|
55
55
  @results[kind] ||= {}
@@ -57,7 +57,7 @@ class Puppet_X::Binford2k::Itemize::Runner
57
57
  counts.each do |name, count|
58
58
  segments = name.split('::')
59
59
  if @dependencies and segments.size > 1
60
- Puppet.warning "Undeclared module dependancy: #{name}" unless @dependencies.include? segments.first
60
+ Puppet.warn_once(:dependency, name, "Undeclared module dependancy: #{name}", :default, :default) unless @dependencies.include? segments.first
61
61
  end
62
62
  next if @options[:external] and segments.first == @namespace
63
63
 
@@ -1,7 +1,7 @@
1
1
  module Puppet_X
2
2
  module Binford2k
3
3
  class Itemize
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-itemize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Ford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-17 00:00:00.000000000 Z
11
+ date: 2018-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet
@@ -48,6 +48,7 @@ files:
48
48
  - lib/puppet/face/parser/itemize.rb
49
49
  - lib/puppet_x/binford2k/itemize.rb
50
50
  - lib/puppet_x/binford2k/itemize/cli.rb
51
+ - lib/puppet_x/binford2k/itemize/monkeypatch.rb
51
52
  - lib/puppet_x/binford2k/itemize/parser.rb
52
53
  - lib/puppet_x/binford2k/itemize/runner.rb
53
54
  - lib/puppet_x/binford2k/itemize/version.rb