puppet-itemize 0.0.2 → 0.0.3

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
  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