puppet-debugger 0.11.0 → 0.12.0

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: e98e90f35a13e50b2b3f02e7c8b5aa590daa90b31df68a868403fba0399ef35e
4
- data.tar.gz: 10bee3e410b82be3c5ff0f8134b6ac1fb8c38cfc2a1d21a10bbd214059ba6434
2
+ SHA1:
3
+ metadata.gz: e3a943d793cc70f63e92cffc0843d0f4e9dfee03
4
+ data.tar.gz: 892a71554b9c5e156de87363341c3ef04bc8cc7a
5
5
  SHA512:
6
- metadata.gz: c4ab1e0c51864faf1f53ac54b7a54f158e74e446888b6671a1d51ec48a8fb316b15419330d98d8e350b0e7df2875e47c3d88c840bd6b72e1679fc2ae5eb89a00
7
- data.tar.gz: 6185292e9b63138cee9727c78d305e8ed00e463ba43b27a44d0ff7b0e42c0d76d098263a8a6987b771f89d561950fc5cc0eac8c637e332c53d69692c2dce11cf
6
+ metadata.gz: 35605789439801670e2899f17de1e10ef8109d6cb998ca6766993ba403dee1ab990a02faf0e43ae619f58c2d6ee2c83fa1b240d9eb9b88d51d2fce9011a8064e
7
+ data.tar.gz: bb774bc6493905d0fc280c09862e33462e4ea363c081d523b2ac2958f0f03e98a06d46f3593ad26b87e24380bed1131c9b7d233250890f1337069d94fd52613d
data/.gitlab-ci.yml CHANGED
@@ -17,7 +17,7 @@ stages:
17
17
  - ruby
18
18
 
19
19
  web_trigger_staging:
20
- type: web_deploy
20
+ stage: web_deploy
21
21
  variables:
22
22
  REF: staging
23
23
  only:
@@ -37,7 +37,7 @@ rubocop_ruby:
37
37
  - bundle exec rubocop -D
38
38
 
39
39
  bump_and_tag:
40
- type: release
40
+ stage: release
41
41
  when: manual
42
42
  tags:
43
43
  - ruby2.2
@@ -76,7 +76,7 @@ bump_and_tag:
76
76
  image: ruby:2.5
77
77
 
78
78
 
79
- .ruby_25: &ruby26
79
+ .ruby_26: &ruby26
80
80
  image: ruby:2.6
81
81
 
82
82
  gem_production:
@@ -133,8 +133,8 @@ puppet_60_ruby25:
133
133
  <<: *puppet_job_def
134
134
  <<: *ruby25
135
135
 
136
- puppet_60_ruby25:
136
+ puppet_60_ruby26:
137
137
  variables:
138
138
  PUPPET_GEM_VERSION: "~> 6.4"
139
139
  <<: *puppet_job_def
140
- <<: *ruby25
140
+ <<: *ruby26
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4
1
+ 2.4.5
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.12.0
4
+
5
+ - Adds ability to list resource parameters as they were evaluated
6
+ - Fixes #61 - array output is misleading
7
+
3
8
  ## 0.11.0
4
9
 
5
10
  - Fixes native functions not shown in functions command
@@ -7,12 +7,41 @@ module PuppetDebugger
7
7
  COMMAND_GROUP = :scope
8
8
 
9
9
  def run(args = [])
10
+ filter = args
11
+ unless filter.empty?
12
+ parameters = resource_parameters(debugger.scope.catalog.resources, filter)
13
+ return parameters.ai(sort_keys: true, indent: -1)
14
+ end
10
15
  # remove duplicate variables that are also in the facts hash
11
16
  variables = debugger.scope.to_hash.delete_if { |key, _value| debugger.node.facts.values.key?(key) }
12
17
  variables['facts'] = 'removed by the puppet-debugger' if variables.key?('facts')
13
18
  output = 'Facts were removed for easier viewing'.ai + "\n"
14
19
  output += variables.ai(sort_keys: true, indent: -1)
15
20
  end
21
+
22
+ def resource_parameters(resources, filter = [])
23
+ find_resources(resources, filter).each_with_object({}) do | resource, acc|
24
+ name = "#{resource.type}[#{resource.name}]"
25
+ acc[name] = parameters_to_h(resource)
26
+ acc
27
+ end
28
+ end
29
+
30
+ def parameters_to_h(resource)
31
+ resource.parameters.each_with_object({}) do | param, params |
32
+ name = param.first.to_s
33
+ params[name] = param.last.value
34
+ params
35
+ end
36
+ end
37
+
38
+ def find_resources(resources, filter = [])
39
+ filter_string = filter.join(' ').downcase
40
+ resources.find_all do |resource|
41
+ resource.name.to_s.downcase.include?(filter_string) || resource.type.to_s.downcase.include?(filter_string)
42
+ end
43
+ end
44
+
16
45
  end
17
46
  end
18
47
  end
@@ -93,25 +93,25 @@ module PuppetDebugger
93
93
  # don't return anything or returns nil if item is not in the catalog
94
94
  end
95
95
 
96
- # returns a formatted array
96
+ #
97
+ # @return [Array] - returns a formatted array
98
+ # @param types [Array] - an array or string
97
99
  def expand_resource_type(types)
98
- output = [types].flatten.map do |t|
99
- if t.class.to_s =~ /Puppet::Pops::Types/
100
- to_resource_declaration(t)
101
- else
102
- t
103
- end
104
- end
105
- output
100
+ Array(types).flatten.map { |t| contains_resources?(t) ? to_resource_declaration(t) : t }
101
+ end
102
+
103
+ def contains_resources?(result)
104
+ ! Array(result).flatten.find {|r| r.class.to_s =~ /Puppet::Pops::Types/ }.nil?
106
105
  end
107
106
 
108
107
  def normalize_output(result)
109
- if result.instance_of?(Array)
108
+ if contains_resources?(result)
110
109
  output = expand_resource_type(result)
110
+ # the results might be wrapped into an array
111
+ # if the only output is a resource then return it
112
+ # otherwise it is multiple items or an actually array
111
113
  return output.first if output.count == 1
112
114
  return output
113
- elsif result.class.to_s =~ /Puppet::Pops::Types/
114
- return to_resource_declaration(result)
115
115
  end
116
116
  result
117
117
  end
@@ -161,6 +161,10 @@ module PuppetDebugger
161
161
  exit 1 # this can sometimes causes tests to fail
162
162
  rescue PuppetDebugger::Exception::Error => e
163
163
  output = e.message.fatal
164
+ rescue RuntimeException => e
165
+ output = e.message.fatal
166
+ out_buffer.puts output
167
+ exit 1
164
168
  end
165
169
  unless output.empty?
166
170
  out_buffer.print ' => '
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PuppetDebugger
4
- VERSION = '0.11.0'
4
+ VERSION = '0.12.0'
5
5
  end
@@ -35,4 +35,21 @@ describe :vars do
35
35
  expect(plugin.run(args)).to match(debugger_output)
36
36
  end
37
37
  end
38
+
39
+ describe 'list variables' do
40
+ let(:input) do
41
+ <<-EOF
42
+ class test( $param1 = "files", $param2 = $param1 ) {}
43
+ include test
44
+ EOF
45
+ end
46
+ it 'ls test' do
47
+ debugger.handle_input(input)
48
+ out = plugin.run(['test'])
49
+ expect(out).to include('"param1"')
50
+ expect(out).to include('"param2"')
51
+ end
52
+
53
+
54
+ end
38
55
  end
@@ -225,11 +225,23 @@ describe 'PuppetDebugger' do
225
225
  it 'shows type' do
226
226
  if Gem::Version.new(Puppet.version) > Gem::Version.new('4.4')
227
227
  debugger.handle_input(input)
228
- expect(output.string).to eq("\n => Tuple[Integer[1, 1], Integer[2, 2], Integer[3, 3], Integer[4, 4]]\n") if supports_type_function?
228
+ expect(output.string.strip.split("\n").count).to eq(6)
229
229
  end
230
230
  end
231
231
  end
232
232
 
233
+ describe 'multi diemension array' do
234
+ let(:input) do
235
+ '[[1, [23,4], [22], [1,[2232]]]]'
236
+ end
237
+
238
+ it 'handles multi array' do
239
+ debugger.handle_input(input)
240
+ expect(output.string.count('[')).to eq(17)
241
+ end
242
+
243
+ end
244
+
233
245
  describe 'command_completion' do
234
246
  it 'should complete on tabs' do
235
247
  allow(Readline).to receive(:line_buffer).and_return("\n")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-debugger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Osman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-07 00:00:00.000000000 Z
11
+ date: 2019-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: table_print
@@ -286,7 +286,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
286
286
  - !ruby/object:Gem::Version
287
287
  version: '0'
288
288
  requirements: []
289
- rubygems_version: 3.0.3
289
+ rubyforge_project:
290
+ rubygems_version: 2.6.14.3
290
291
  signing_key:
291
292
  specification_version: 4
292
293
  summary: A repl based debugger for the puppet language