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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 422fdbc454ed30e9fbca344080e6d4382e55f5332a1c6e3aa156d9f2f5651da3
|
4
|
+
data.tar.gz: 51a10a2c4b77efc62111d15e2ad074cdb1e2c584d6b7aea5d4e5ca30991540c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b003d8ff8e2bec6e60334259ec9d8db6c1e5224ddaaec46df38cbf99dd62a9f9e7289f391198559df4ac3d95139fb1665b56328987d54bce0e72df57202d7dd
|
7
|
+
data.tar.gz: 800ee84189d7f936e709e183a08870c8267984a8d8f488a8a0f1f0aff061f58cbf294a4168782c08d68c9420db965b750123a4d4592ebceda4fbf9af22b65715
|
data/CHANGELOG.md
CHANGED
@@ -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
|
-
|
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
|
-
|
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.
|
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
|
-
|
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.
|
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
|
|
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
|
+
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-
|
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
|