puppet-itemize 0.0.3 → 0.0.4

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
- SHA256:
3
- metadata.gz: 422fdbc454ed30e9fbca344080e6d4382e55f5332a1c6e3aa156d9f2f5651da3
4
- data.tar.gz: 51a10a2c4b77efc62111d15e2ad074cdb1e2c584d6b7aea5d4e5ca30991540c8
2
+ SHA1:
3
+ metadata.gz: 7b3c318001bfbfe15c2c0568b90c5828cc043374
4
+ data.tar.gz: 7b6b404e88698f56acccc6df7e756d145a41344f
5
5
  SHA512:
6
- metadata.gz: 4b003d8ff8e2bec6e60334259ec9d8db6c1e5224ddaaec46df38cbf99dd62a9f9e7289f391198559df4ac3d95139fb1665b56328987d54bce0e72df57202d7dd
7
- data.tar.gz: 800ee84189d7f936e709e183a08870c8267984a8d8f488a8a0f1f0aff061f58cbf294a4168782c08d68c9420db965b750123a4d4592ebceda4fbf9af22b65715
6
+ metadata.gz: 47a02d64eb0371acbf7ddc46aa9b69af05dcb2429f1cd02c3bd96e08c3fe2a994b5d757b7bcf522d555792caf201f8e0c1c2fca61a1ad7326c8b3ab3aebbd50a
7
+ data.tar.gz: 1f4d3499b0a7d29907f9f78d2bc5e7fb4bbda7143b5ee80f7a2e7b7aefeff672c546cd98af63c768bc459ab41b440170f8f34a6c90e4cc917cb1f0af3a8f59fe
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # v0.0.4
2
+
3
+ * Stop monkeypatching core classes
4
+ * Catch both prefix and postfix function forms
5
+ * Count `require` and `contain` functions properly
6
+
7
+
1
8
  # v0.0.3
2
9
 
3
10
  * Parse more syntax edge cases without exploding. We can't evaluate everything
data/README.md CHANGED
@@ -92,11 +92,6 @@ below in the class list as `apache::mod::<??>`.
92
92
  ```
93
93
  $ puppet parser itemize ~/Projects/puppetlabs-apache/manifests/
94
94
  Warning: Undeclared module dependancy: portage::makeconf
95
- Warning: Undeclared module dependancy: portage::makeconf
96
- Warning: Undeclared module dependancy: portage::makeconf
97
- Warning: Undeclared module dependancy: portage::makeconf
98
- Warning: Undeclared module dependancy: portage::makeconf
99
- Warning: Undeclared module dependancy: portage::makeconf
100
95
  Warning: create_resources detected. Please update to use iteration instead.
101
96
  Resource usage analysis:
102
97
  =======================================
@@ -1,7 +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
+ # require 'puppet_x/binford2k/itemize/monkeypatch'
5
5
 
6
6
  class Puppet_X::Binford2k::Itemize::Parser
7
7
  attr_reader :results
@@ -58,7 +58,7 @@ class Puppet_X::Binford2k::Itemize::Parser
58
58
  end
59
59
 
60
60
  def count_ResourceExpression(o)
61
- resource_name = o.type_name.value
61
+ resource_name = value_of(o.type_name)
62
62
  case resource_name
63
63
  when 'class'
64
64
  # for classes declared as resource-style, we have to traverse back up the
@@ -67,10 +67,10 @@ class Puppet_X::Binford2k::Itemize::Parser
67
67
  case klass.title
68
68
  when Puppet::Pops::Model::LiteralList
69
69
  klass.title.values.each do |item|
70
- record(:classes, item.value)
70
+ record(:classes, value_of(item))
71
71
  end
72
72
  else
73
- record(:classes, klass.title.value)
73
+ record(:classes, value_of(klass.title))
74
74
  end
75
75
  end
76
76
  else
@@ -78,24 +78,54 @@ class Puppet_X::Binford2k::Itemize::Parser
78
78
  end
79
79
  end
80
80
 
81
+ # postfix functions
82
+ def count_CallMethodExpression(o)
83
+ record_function(o, o.functor_expr.right_expr.value)
84
+ end
85
+
86
+ # prefix functions
81
87
  def count_CallNamedFunctionExpression(o)
82
- function_name = o.functor_expr.value
88
+ record_function(o, o.functor_expr.value)
89
+ end
90
+
91
+ def record_function(o, function_name)
83
92
  case function_name
84
- when 'include'
93
+ when 'include', 'contain', 'require'
85
94
  o.arguments.each do |klass|
86
- record(:classes, klass.value)
95
+ record(:classes, value_of(klass))
87
96
  end
88
97
 
89
98
  when 'create_resources'
90
99
  Puppet.warn_once(:dependency, 'create_resources', 'create_resources detected. Please update to use iteration instead.', :default, :default)
91
100
  record(:functions, function_name)
92
- record(:types, o.arguments.first.value)
101
+ record(:types, value_of(o.arguments.first))
93
102
 
94
103
  else
95
104
  record(:functions, function_name)
96
105
  end
97
106
  end
98
107
 
108
+ def value_of(obj)
109
+ case obj
110
+ when Puppet::Pops::Model::ConcatenatedString
111
+ obj.segments.map {|t| t.value rescue nil }.join('<??>')
112
+ when Puppet::Pops::Model::VariableExpression,
113
+ Puppet::Pops::Model::CallMethodExpression,
114
+ Puppet::Pops::Model::LiteralDefault
115
+ '<??>'
116
+ when Puppet::Pops::Model::CallMethodExpression
117
+ obj.functor_expr.right_expr.value
118
+ when Puppet::Pops::Model::AccessExpression
119
+ obj.keys.map {|t| t.value rescue nil }.join
120
+ when Puppet::Pops::Model::ArithmeticExpression
121
+ obj.left_expr.value + obj.operator + obj.right_expr.value
122
+ when Puppet::Pops::Model::CallNamedFunctionExpression
123
+ "#{obj.functor_expr.value}(#{obj.arguments.map {|a| a.value rescue nil }.join(',')})"
124
+ else
125
+ obj.value
126
+ end
127
+ end
128
+
99
129
  def dump!
100
130
  require 'json'
101
131
  puts JSON.pretty_generate(@results)
@@ -1,7 +1,7 @@
1
1
  module Puppet_X
2
2
  module Binford2k
3
3
  class Itemize
4
- VERSION = '0.0.3'
4
+ VERSION = '0.0.4'
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.3
4
+ version: 0.0.4
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-25 00:00:00.000000000 Z
11
+ date: 2018-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet
@@ -48,7 +48,6 @@ 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
52
51
  - lib/puppet_x/binford2k/itemize/parser.rb
53
52
  - lib/puppet_x/binford2k/itemize/runner.rb
54
53
  - lib/puppet_x/binford2k/itemize/version.rb
@@ -72,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
71
  version: '0'
73
72
  requirements: []
74
73
  rubyforge_project:
75
- rubygems_version: 2.7.7
74
+ rubygems_version: 2.5.2.3
76
75
  signing_key:
77
76
  specification_version: 4
78
77
  summary: Count the number of types, classes, functions used in Puppet manifest(s).
@@ -1,51 +0,0 @@
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