puppet-itemize 0.0.4 → 0.0.5

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
  SHA1:
3
- metadata.gz: 7b3c318001bfbfe15c2c0568b90c5828cc043374
4
- data.tar.gz: 7b6b404e88698f56acccc6df7e756d145a41344f
3
+ metadata.gz: 87413824f9668fcaae315821a7d3348da4b4e702
4
+ data.tar.gz: 4d2951949779cb082d2c992d9909c384996eaa2e
5
5
  SHA512:
6
- metadata.gz: 47a02d64eb0371acbf7ddc46aa9b69af05dcb2429f1cd02c3bd96e08c3fe2a994b5d757b7bcf522d555792caf201f8e0c1c2fca61a1ad7326c8b3ab3aebbd50a
7
- data.tar.gz: 1f4d3499b0a7d29907f9f78d2bc5e7fb4bbda7143b5ee80f7a2e7b7aefeff672c546cd98af63c768bc459ab41b440170f8f34a6c90e4cc917cb1f0af3a8f59fe
6
+ metadata.gz: b180f793fb59579779f53670c416a53964ca1014c76ee72ff7722b1598bae643ab86115c191129094b12af7ab47fa2b93561270972a10d2582101460ddce5dad
7
+ data.tar.gz: 1c639ec0db9e239caa331ad6a560dbd092928d49ae616451f742c0d0c918dc12ff44c3949f4bc7018ac58dc01e590479912a8c0adf7bfb1ba5d1023707d65c93
@@ -1,3 +1,9 @@
1
+ # v0.0.5
2
+
3
+ * Add the monkeypatch back in. Calculating it via a class method just had too
4
+ many edge cases.
5
+
6
+
1
7
  # v0.0.4
2
8
 
3
9
  * Stop monkeypatching core classes
@@ -1,8 +1,7 @@
1
1
  module Puppet_X
2
2
  module Binford2k
3
3
  class Itemize
4
- VERSION = '0.0.1'
5
-
4
+ require 'puppet_x/binford2k/itemize/version'
6
5
  require 'puppet_x/binford2k/itemize/parser'
7
6
  require 'puppet_x/binford2k/itemize/runner'
8
7
  end
@@ -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,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 = value_of(o.type_name)
61
+ resource_name = o.type_name.value
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, value_of(item))
70
+ record(:classes, item.value)
71
71
  end
72
72
  else
73
- record(:classes, value_of(klass.title))
73
+ record(:classes, klass.title.value)
74
74
  end
75
75
  end
76
76
  else
@@ -92,19 +92,20 @@ class Puppet_X::Binford2k::Itemize::Parser
92
92
  case function_name
93
93
  when 'include', 'contain', 'require'
94
94
  o.arguments.each do |klass|
95
- record(:classes, value_of(klass))
95
+ record(:classes, klass.value)
96
96
  end
97
97
 
98
98
  when 'create_resources'
99
99
  Puppet.warn_once(:dependency, 'create_resources', 'create_resources detected. Please update to use iteration instead.', :default, :default)
100
100
  record(:functions, function_name)
101
- record(:types, value_of(o.arguments.first))
101
+ record(:types, o.arguments.first.value)
102
102
 
103
103
  else
104
104
  record(:functions, function_name)
105
105
  end
106
106
  end
107
107
 
108
+ # lots of edge cases of edge cases here. Monkeypatching seems more reliable
108
109
  def value_of(obj)
109
110
  case obj
110
111
  when Puppet::Pops::Model::ConcatenatedString
@@ -114,11 +115,11 @@ class Puppet_X::Binford2k::Itemize::Parser
114
115
  Puppet::Pops::Model::LiteralDefault
115
116
  '<??>'
116
117
  when Puppet::Pops::Model::CallMethodExpression
117
- obj.functor_expr.right_expr.value
118
+ value_of(obj.functor_expr.right_expr)
118
119
  when Puppet::Pops::Model::AccessExpression
119
120
  obj.keys.map {|t| t.value rescue nil }.join
120
121
  when Puppet::Pops::Model::ArithmeticExpression
121
- obj.left_expr.value + obj.operator + obj.right_expr.value
122
+ value_of(obj.left_expr) + obj.operator + value_of(obj.right_expr)
122
123
  when Puppet::Pops::Model::CallNamedFunctionExpression
123
124
  "#{obj.functor_expr.value}(#{obj.arguments.map {|a| a.value rescue nil }.join(',')})"
124
125
  else
@@ -1,7 +1,7 @@
1
1
  module Puppet_X
2
2
  module Binford2k
3
3
  class Itemize
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.5'
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.4
4
+ version: 0.0.5
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-11-19 00:00:00.000000000 Z
11
+ date: 2018-11-20 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