puppet-itemize 0.0.3 → 0.0.4

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