puppet-debugger 0.6.1 → 0.7.0

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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.gitlab-ci.yml +30 -13
  4. data/.rubocop.yml +3 -1
  5. data/.rubocop_todo.yml +11 -2
  6. data/.ruby-version +1 -1
  7. data/CHANGELOG.md +9 -0
  8. data/DEVELOPMENT.md +6 -1
  9. data/Gemfile +14 -12
  10. data/Plugin_development.md +304 -0
  11. data/README.md +4 -7
  12. data/Rakefile +6 -5
  13. data/bin/pdb +1 -0
  14. data/lib/awesome_print/ext/awesome_puppet.rb +1 -0
  15. data/lib/plugins/puppet-debugger/input_responders/benchmark.rb +40 -0
  16. data/lib/plugins/puppet-debugger/input_responders/classes.rb +15 -0
  17. data/lib/plugins/puppet-debugger/input_responders/classification.rb +14 -0
  18. data/lib/plugins/puppet-debugger/input_responders/commands.rb +95 -0
  19. data/lib/plugins/puppet-debugger/input_responders/datatypes.rb +17 -0
  20. data/lib/plugins/puppet-debugger/input_responders/environment.rb +14 -0
  21. data/lib/plugins/puppet-debugger/input_responders/exit.rb +14 -0
  22. data/lib/plugins/puppet-debugger/input_responders/facterdb_filter.rb +16 -0
  23. data/lib/plugins/puppet-debugger/input_responders/facts.rb +15 -0
  24. data/lib/plugins/puppet-debugger/input_responders/functions.rb +15 -0
  25. data/lib/plugins/puppet-debugger/input_responders/help.rb +14 -0
  26. data/lib/plugins/puppet-debugger/input_responders/krt.rb +14 -0
  27. data/lib/{puppet-debugger/support → plugins/puppet-debugger/input_responders}/play.rb +37 -26
  28. data/lib/plugins/puppet-debugger/input_responders/reset.rb +21 -0
  29. data/lib/plugins/puppet-debugger/input_responders/resources.rb +22 -0
  30. data/lib/plugins/puppet-debugger/input_responders/set.rb +55 -0
  31. data/lib/plugins/puppet-debugger/input_responders/types.rb +35 -0
  32. data/lib/plugins/puppet-debugger/input_responders/vars.rb +18 -0
  33. data/lib/plugins/puppet-debugger/input_responders/whereami.rb +29 -0
  34. data/lib/puppet-debugger.rb +12 -1
  35. data/lib/puppet-debugger/cli.rb +38 -22
  36. data/lib/puppet-debugger/code/code_file.rb +16 -15
  37. data/lib/puppet-debugger/code/code_range.rb +1 -0
  38. data/lib/puppet-debugger/code/loc.rb +1 -0
  39. data/lib/puppet-debugger/debugger_code.rb +1 -0
  40. data/lib/puppet-debugger/hooks.rb +174 -0
  41. data/lib/puppet-debugger/input_responder_plugin.rb +45 -0
  42. data/lib/puppet-debugger/plugin_test_helper.rb +44 -0
  43. data/lib/puppet-debugger/support.rb +13 -9
  44. data/lib/puppet-debugger/support/compiler.rb +1 -0
  45. data/lib/puppet-debugger/support/environment.rb +2 -0
  46. data/lib/puppet-debugger/support/errors.rb +9 -0
  47. data/lib/puppet-debugger/support/facts.rb +2 -1
  48. data/lib/puppet-debugger/support/functions.rb +3 -1
  49. data/lib/puppet-debugger/support/loader.rb +2 -0
  50. data/lib/puppet-debugger/support/node.rb +1 -0
  51. data/lib/puppet-debugger/support/scope.rb +1 -0
  52. data/lib/puppet/application/debugger.rb +1 -0
  53. data/lib/version.rb +2 -1
  54. data/puppet-debugger.gemspec +20 -15
  55. data/run_container_test.sh +1 -1
  56. data/spec/environment_spec.rb +2 -1
  57. data/spec/facts_spec.rb +1 -0
  58. data/spec/hooks_spec.rb +341 -0
  59. data/spec/input_responder_plugin_spec.rb +45 -0
  60. data/spec/input_responders/help_spec.rb +17 -0
  61. data/spec/input_responders/krt_spec.rb +12 -0
  62. data/spec/input_responders/play_spec.rb +160 -0
  63. data/spec/pdb_spec.rb +1 -0
  64. data/spec/puppet/application/debugger_spec.rb +1 -2
  65. data/spec/puppet_debugger_spec.rb +49 -88
  66. data/spec/remote_node_spec.rb +3 -2
  67. data/spec/spec_helper.rb +7 -0
  68. data/spec/support_spec.rb +5 -116
  69. data/test_matrix.rb +2 -0
  70. metadata +65 -12
  71. data/Gemfile.lock +0 -95
  72. data/lib/puppet-debugger/support/input_responders.rb +0 -191
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'simplecov'
3
4
  require_relative '../lib/puppet-debugger'
4
5
  require 'yaml'
@@ -57,6 +58,12 @@ def supports_type_function?
57
58
  Gem::Version.new(Puppet.version) >= Gem::Version.new('4.0')
58
59
  end
59
60
 
61
+ def supports_datatypes?
62
+ Gem::Version.new(Puppet.version) >= Gem::Version.new('4.5')
63
+ end
64
+
65
+
60
66
  RSpec.configure do |config|
61
67
  config.filter_run_excluding native_functions: !supports_native_functions?
68
+ RSpec::Expectations.configuration.on_potential_false_positives = :nothing
62
69
  end
data/spec/support_spec.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'spec_helper'
3
4
  require 'tempfile'
4
5
 
5
6
  describe 'support' do
6
7
  let(:output) do
7
- StringIO.new('', 'w')
8
+ StringIO.new
8
9
  end
9
10
 
10
11
  let(:debugger) do
@@ -15,31 +16,8 @@ describe 'support' do
15
16
  debugger.scope
16
17
  end
17
18
 
18
- describe 'play' do
19
- before(:each) do
20
- allow(debugger).to receive(:fetch_url_data).with(file_url + '.txt').and_return(File.read(fixtures_file))
21
- end
22
-
23
- let(:fixtures_file) do
24
- File.join(fixtures_dir, 'sample_manifest.pp')
25
- end
26
-
27
- let(:file_url) do
28
- 'https://gist.github.com/logicminds/f9b1ac65a3a440d562b0'
29
- end
30
- let(:input) do
31
- "play #{file_url}"
32
- end
33
-
34
- it do
35
- debugger.handle_input(input)
36
- expect(output.string).to match(/test/)
37
- expect(output.string).to match(/Puppet::Type::File/)
38
- end
39
- end
40
-
41
19
  let(:puppet_version) do
42
- debugger.mod_finder.match(debugger.puppet_lib_dir)[1]
20
+ debugger.puppet_lib_dir.scan(debugger.mod_finder).flatten.last
43
21
  end
44
22
 
45
23
  let(:manifest_file) do
@@ -71,7 +49,7 @@ describe 'support' do
71
49
  end
72
50
 
73
51
  it 'should return a puppet version' do
74
- expect(puppet_version).to match(/puppet-\d\.\d.\d/)
52
+ expect(puppet_version).to match(/puppet-\d\.\d+.\d/)
75
53
  end
76
54
 
77
55
  it 'should return lib dirs' do
@@ -92,94 +70,5 @@ describe 'support' do
92
70
  expect(debugger.node.facts.values['fqdn']).to eq('foo.example.com')
93
71
  end
94
72
 
95
- describe 'convert url' do
96
- describe 'unsupported' do
97
- let(:url) { 'https://bitbuck.com/master/lib/log_helper.rb' }
98
- let(:converted) { 'https://bitbuck.com/master/lib/log_helper.rb' }
99
- it do
100
- expect(debugger.convert_to_text(url)).to eq(converted)
101
- end
102
- end
103
- describe 'gitlab' do
104
- describe 'blob' do
105
- let(:url) { 'https://gitlab.com/nwops/pdebugger-web/blob/master/lib/log_helper.rb' }
106
- let(:converted) { 'https://gitlab.com/nwops/pdebugger-web/raw/master/lib/log_helper.rb' }
107
- it do
108
- expect(debugger.convert_to_text(url)).to eq(converted)
109
- end
110
- end
111
-
112
- describe 'raw' do
113
- let(:url) { 'https://gitlab.com/nwops/pdebugger-web/raw/master/lib/log_helper.rb' }
114
- let(:converted) { 'https://gitlab.com/nwops/pdebugger-web/raw/master/lib/log_helper.rb' }
115
- it do
116
- expect(debugger.convert_to_text(url)).to eq(converted)
117
- end
118
- end
119
-
120
- describe 'snippet' do
121
- describe 'not raw' do
122
- let(:url) { 'https://gitlab.com/snippets/19471' }
123
- let(:converted) { 'https://gitlab.com/snippets/19471/raw' }
124
- it do
125
- expect(debugger.convert_to_text(url)).to eq(converted)
126
- end
127
- end
128
-
129
- describe 'raw' do
130
- let(:url) { 'https://gitlab.com/snippets/19471/raw' }
131
- let(:converted) { 'https://gitlab.com/snippets/19471/raw' }
132
- it do
133
- expect(debugger.convert_to_text(url)).to eq(converted)
134
- end
135
- end
136
- end
137
- end
138
- describe 'github' do
139
- describe 'raw' do
140
- let(:url) { 'https://gist.githubusercontent.com/logicminds/f9b1ac65a3a440d562b0/raw' }
141
- let(:converted) { 'https://gist.githubusercontent.com/logicminds/f9b1ac65a3a440d562b0/raw' }
142
- it do
143
- expect(debugger.convert_to_text(url)).to eq(converted)
144
- end
145
- end
146
- describe 'raw' do
147
- let(:url) { 'https://gist.githubusercontent.com/logicminds/f9b1ac65a3a440d562b0' }
148
- let(:converted) { 'https://gist.githubusercontent.com/logicminds/f9b1ac65a3a440d562b0.txt' }
149
- it do
150
- expect(debugger.convert_to_text(url)).to eq(converted)
151
- end
152
- end
153
- describe 'raw gist' do
154
- let(:url) { 'https://gist.githubusercontent.com/logicminds/f9b1ac65a3a440d562b0/raw/c8f6be52da5b2b0eeaabb9aa75832b75793d35d1/controls.pp' }
155
- let(:converted) { 'https://gist.githubusercontent.com/logicminds/f9b1ac65a3a440d562b0/raw/c8f6be52da5b2b0eeaabb9aa75832b75793d35d1/controls.pp' }
156
- it do
157
- expect(debugger.convert_to_text(url)).to eq(converted)
158
- end
159
- end
160
- describe 'raw non gist' do
161
- let(:url) { 'https://raw.githubusercontent.com/nwops/puppet-debugger/master/lib/puppet-debugger.rb' }
162
- let(:converted) { 'https://raw.githubusercontent.com/nwops/puppet-debugger/master/lib/puppet-debugger.rb' }
163
- it do
164
- expect(debugger.convert_to_text(url)).to eq(converted)
165
- end
166
- end
167
-
168
- describe 'blob' do
169
- let(:url) { 'https://github.com/nwops/puppet-debugger/blob/master/lib/puppet-debugger.rb' }
170
- let(:converted) { 'https://github.com/nwops/puppet-debugger/raw/master/lib/puppet-debugger.rb' }
171
- it do
172
- expect(debugger.convert_to_text(url)).to eq(converted)
173
- end
174
- end
175
-
176
- describe 'gist' do
177
- let(:url) { 'https://gist.github.com/logicminds/f9b1ac65a3a440d562b0' }
178
- let(:converted) { 'https://gist.github.com/logicminds/f9b1ac65a3a440d562b0.txt' }
179
- it do
180
- expect(debugger.convert_to_text(url)).to eq(converted)
181
- end
182
- end
183
- end
184
- end
73
+
185
74
  end
data/test_matrix.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'yaml'
3
4
  require 'fileutils'
5
+ require 'English'
4
6
  @threads = {}
5
7
 
6
8
  def run_container(image, puppet_version)
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-debugger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.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: 2017-04-24 00:00:00.000000000 Z
11
+ date: 2017-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pluginator
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.4.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.4.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: puppet
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -28,30 +42,30 @@ dependencies:
28
42
  name: facterdb
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ">="
45
+ - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: 0.3.8
47
+ version: 0.3.1
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ">="
52
+ - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: 0.3.8
54
+ version: 0.3.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: awesome_print
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '1.6'
61
+ version: '1.7'
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '1.6'
68
+ version: '1.7'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rdoc
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,20 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '3.12'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.6'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.6'
69
97
  description: A interactive command line tool for evaluating and debugging the puppet
70
98
  language
71
99
  email: corey@nwops.io
@@ -89,28 +117,48 @@ files:
89
117
  - CHANGELOG.md
90
118
  - DEVELOPMENT.md
91
119
  - Gemfile
92
- - Gemfile.lock
93
120
  - LICENSE.txt
121
+ - Plugin_development.md
94
122
  - README.md
95
123
  - Rakefile
96
124
  - bin/pdb
97
125
  - lib/awesome_print/ext/awesome_puppet.rb
126
+ - lib/plugins/puppet-debugger/input_responders/benchmark.rb
127
+ - lib/plugins/puppet-debugger/input_responders/classes.rb
128
+ - lib/plugins/puppet-debugger/input_responders/classification.rb
129
+ - lib/plugins/puppet-debugger/input_responders/commands.rb
130
+ - lib/plugins/puppet-debugger/input_responders/datatypes.rb
131
+ - lib/plugins/puppet-debugger/input_responders/environment.rb
132
+ - lib/plugins/puppet-debugger/input_responders/exit.rb
133
+ - lib/plugins/puppet-debugger/input_responders/facterdb_filter.rb
134
+ - lib/plugins/puppet-debugger/input_responders/facts.rb
135
+ - lib/plugins/puppet-debugger/input_responders/functions.rb
136
+ - lib/plugins/puppet-debugger/input_responders/help.rb
137
+ - lib/plugins/puppet-debugger/input_responders/krt.rb
138
+ - lib/plugins/puppet-debugger/input_responders/play.rb
139
+ - lib/plugins/puppet-debugger/input_responders/reset.rb
140
+ - lib/plugins/puppet-debugger/input_responders/resources.rb
141
+ - lib/plugins/puppet-debugger/input_responders/set.rb
142
+ - lib/plugins/puppet-debugger/input_responders/types.rb
143
+ - lib/plugins/puppet-debugger/input_responders/vars.rb
144
+ - lib/plugins/puppet-debugger/input_responders/whereami.rb
98
145
  - lib/puppet-debugger.rb
99
146
  - lib/puppet-debugger/cli.rb
100
147
  - lib/puppet-debugger/code/code_file.rb
101
148
  - lib/puppet-debugger/code/code_range.rb
102
149
  - lib/puppet-debugger/code/loc.rb
103
150
  - lib/puppet-debugger/debugger_code.rb
151
+ - lib/puppet-debugger/hooks.rb
152
+ - lib/puppet-debugger/input_responder_plugin.rb
153
+ - lib/puppet-debugger/plugin_test_helper.rb
104
154
  - lib/puppet-debugger/support.rb
105
155
  - lib/puppet-debugger/support/compiler.rb
106
156
  - lib/puppet-debugger/support/environment.rb
107
157
  - lib/puppet-debugger/support/errors.rb
108
158
  - lib/puppet-debugger/support/facts.rb
109
159
  - lib/puppet-debugger/support/functions.rb
110
- - lib/puppet-debugger/support/input_responders.rb
111
160
  - lib/puppet-debugger/support/loader.rb
112
161
  - lib/puppet-debugger/support/node.rb
113
- - lib/puppet-debugger/support/play.rb
114
162
  - lib/puppet-debugger/support/scope.rb
115
163
  - lib/puppet/application/debugger.rb
116
164
  - lib/trollop.rb
@@ -124,6 +172,11 @@ files:
124
172
  - spec/fixtures/node_obj.yaml
125
173
  - spec/fixtures/sample_manifest.pp
126
174
  - spec/fixtures/sample_start_debugger.pp
175
+ - spec/hooks_spec.rb
176
+ - spec/input_responder_plugin_spec.rb
177
+ - spec/input_responders/help_spec.rb
178
+ - spec/input_responders/krt_spec.rb
179
+ - spec/input_responders/play_spec.rb
127
180
  - spec/pdb_spec.rb
128
181
  - spec/puppet/application/debugger_spec.rb
129
182
  - spec/puppet_debugger_spec.rb
@@ -152,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
205
  version: '0'
153
206
  requirements: []
154
207
  rubyforge_project:
155
- rubygems_version: 2.6.11
208
+ rubygems_version: 2.6.12
156
209
  signing_key:
157
210
  specification_version: 4
158
211
  summary: A repl based debugger for the puppet language
data/Gemfile.lock DELETED
@@ -1,95 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- CFPropertyList (2.2.8)
5
- ast (2.3.0)
6
- awesome_print (1.7.0)
7
- coderay (1.1.1)
8
- diff-lcs (1.3)
9
- docile (1.1.5)
10
- facter (2.4.6)
11
- CFPropertyList (~> 2.2.6)
12
- facterdb (0.3.10)
13
- facter
14
- jgrep
15
- fast_gettext (1.1.0)
16
- gettext (3.2.2)
17
- locale (>= 2.0.5)
18
- text (>= 1.3.0)
19
- gettext-setup (0.16)
20
- fast_gettext (~> 1.1.0)
21
- gettext (>= 3.0.2)
22
- locale
23
- hiera (3.3.1)
24
- jgrep (1.4.1)
25
- json
26
- json (1.8.6)
27
- json_pure (1.8.6)
28
- locale (2.1.2)
29
- method_source (0.8.2)
30
- parser (2.4.0.0)
31
- ast (~> 2.2)
32
- powerpack (0.1.1)
33
- pry (0.10.4)
34
- coderay (~> 1.1.0)
35
- method_source (~> 0.8.1)
36
- slop (~> 3.4)
37
- puppet (4.9.4)
38
- facter (> 2.0, < 4)
39
- gettext-setup (>= 0.10, < 1)
40
- hiera (>= 2.0, < 4)
41
- json_pure (~> 1.8)
42
- locale (~> 2.1)
43
- rainbow (2.2.1)
44
- rake (12.0.0)
45
- rdoc (3.12.2)
46
- json (~> 1.4)
47
- release_me (0.1.4)
48
- rspec (3.5.0)
49
- rspec-core (~> 3.5.0)
50
- rspec-expectations (~> 3.5.0)
51
- rspec-mocks (~> 3.5.0)
52
- rspec-core (3.5.4)
53
- rspec-support (~> 3.5.0)
54
- rspec-expectations (3.5.0)
55
- diff-lcs (>= 1.2.0, < 2.0)
56
- rspec-support (~> 3.5.0)
57
- rspec-mocks (3.5.0)
58
- diff-lcs (>= 1.2.0, < 2.0)
59
- rspec-support (~> 3.5.0)
60
- rspec-support (3.5.0)
61
- rubocop (0.47.1)
62
- parser (>= 2.3.3.1, < 3.0)
63
- powerpack (~> 0.1)
64
- rainbow (>= 1.99.1, < 3.0)
65
- ruby-progressbar (~> 1.7)
66
- unicode-display_width (~> 1.0, >= 1.0.1)
67
- ruby-progressbar (1.8.1)
68
- simplecov (0.14.1)
69
- docile (~> 1.1.0)
70
- json (>= 1.8, < 3)
71
- simplecov-html (~> 0.10.0)
72
- simplecov-html (0.10.0)
73
- slop (3.6.0)
74
- text (1.3.1)
75
- unicode-display_width (1.1.3)
76
-
77
- PLATFORMS
78
- ruby
79
-
80
- DEPENDENCIES
81
- awesome_print (~> 1.6)
82
- bundler
83
- facterdb (>= 0.3.8)
84
- json_pure (<= 2.0.1)
85
- pry
86
- puppet (~> 4.9.0)
87
- rake
88
- rdoc (~> 3.12)
89
- release_me
90
- rspec
91
- rubocop
92
- simplecov
93
-
94
- BUNDLED WITH
95
- 1.14.6
@@ -1,191 +0,0 @@
1
- # frozen_string_literal: true
2
- module PuppetDebugger
3
- module Support
4
- module InputResponders
5
- def static_responder_list
6
- %w(exit functions classification vars facterdb_filter krt facts types
7
- resources classes whereami datatypes play reset help)
8
- end
9
-
10
- def disable_benchmark
11
- $benchmark = false
12
- $extra_prompt = ''
13
- 'Off'
14
- end
15
-
16
- def enable_benchmark(show_status = false)
17
- require 'benchmark'
18
- $benchmark = true
19
- if show_status
20
- $extra_prompt = 'BM'
21
- 'On'
22
- end
23
- end
24
-
25
- def benchmark(args = [])
26
- if args.count > 0
27
- enable_benchmark(false)
28
- out = handle_input(args.first)
29
- disable_benchmark
30
- out
31
- else
32
- status = $benchmark ? disable_benchmark : enable_benchmark(true)
33
- "Benchmark Mode #{status}"
34
- end
35
- end
36
-
37
- def datatypes(_args = [])
38
- types = all_data_types
39
- return types.sort.ai if types.instance_of?(Array)
40
- types
41
- end
42
-
43
- # @source_file and @source_line_num instance variables must be set for this
44
- # method to show the surrounding code
45
- # @return [String] - string output of the code surrounded by the breakpoint or nil if file
46
- # or line_num do not exist
47
- def whereami(_command = nil, _args = nil)
48
- file = @source_file
49
- line_num = @source_line_num
50
- if file && line_num
51
- if file == :code
52
- source_code = Puppet[:code]
53
- code = DebuggerCode.from_string(source_code, :puppet)
54
- else
55
- code = DebuggerCode.from_file(file, :puppet)
56
- end
57
- return code.with_marker(line_num).around(line_num, 5)
58
- .with_line_numbers.with_indentation(5).with_file_reference.to_s
59
- end
60
- end
61
-
62
- # @return - returns a list of types available to the environment
63
- # if a error occurs we we run the types function again
64
- def types(_args = [])
65
- loaded_types = []
66
- begin
67
- # this loads all the types, if already loaded the file is skipped
68
- Puppet::Type.loadall
69
- Puppet::Type.eachtype do |t|
70
- next if t.name == :component
71
- loaded_types << t.name.to_s
72
- end
73
- loaded_types.ai
74
- rescue Puppet::Error => e
75
- puts e.message.red
76
- Puppet.info(e.message)
77
- # prevent more than two calls and recursive loop
78
- return if caller_locations(1,10).find_all{|f| f.label == 'types' }.count > 2
79
- types
80
- end
81
- end
82
-
83
- # displays the facterdb filter
84
- # @param [Array] - args is not used
85
- def facterdb_filter(_args = [])
86
- dynamic_facterdb_filter.ai
87
- end
88
-
89
- def help(_args = [])
90
- PuppetDebugger::Cli.print_repl_desc
91
- end
92
-
93
- def handle_set(input)
94
- output = ''
95
- args = input.split(' ')
96
- args.shift # throw away the set
97
- case args.shift
98
- when /node/
99
- if name = args.shift
100
- output = "Resetting to use node #{name}"
101
- reset
102
- set_remote_node_name(name)
103
- else
104
- out_buffer.puts 'Must supply a valid node name'
105
- end
106
- when /loglevel/
107
- if level = args.shift
108
- @log_level = level
109
- set_log_level(level)
110
- output = "loglevel #{Puppet::Util::Log.level} is set"
111
- end
112
- end
113
- output
114
- end
115
-
116
- def facts(_args = [])
117
- variables = node.facts.values
118
- variables.ai(sort_keys: true, indent: -1)
119
- end
120
-
121
- def functions(args = [])
122
- filter = args.first || ''
123
- function_map.keys.sort.grep(/^#{Regexp.escape(filter)}/)
124
- end
125
-
126
- def vars(_args = [])
127
- # remove duplicate variables that are also in the facts hash
128
- variables = scope.to_hash.delete_if { |key, _value| node.facts.values.key?(key) }
129
- variables['facts'] = 'removed by the puppet-debugger' if variables.key?('facts')
130
- output = 'Facts were removed for easier viewing'.ai + "\n"
131
- output += variables.ai(sort_keys: true, indent: -1)
132
- end
133
-
134
- def environment(_args = [])
135
- "Puppet Environment: #{puppet_env_name}"
136
- end
137
-
138
- def reset(_args = [])
139
- set_scope(nil)
140
- set_remote_node_name(nil)
141
- set_node(nil)
142
- set_facts(nil)
143
- set_environment(nil)
144
- set_compiler(nil)
145
- set_log_level(log_level)
146
- end
147
-
148
- def set_log_level(level)
149
- Puppet::Util::Log.level = level.to_sym
150
- buffer_log = Puppet::Util::Log.newdestination(:buffer)
151
- if buffer_log
152
- # if this is already set the buffer_log is nil
153
- buffer_log.out_buffer = out_buffer
154
- buffer_log.err_buffer = out_buffer
155
- end
156
- nil
157
- end
158
-
159
- def krt(_args = [])
160
- known_resource_types.ai(sort_keys: true, indent: -1)
161
- end
162
-
163
- def play(args = [])
164
- config = {}
165
- config[:play] = args.first
166
- play_back(config)
167
- nil # we don't want to return anything
168
- end
169
-
170
- def classification(_args = [])
171
- node.classes.ai
172
- end
173
-
174
- def resources(args = [])
175
- res = scope.compiler.catalog.resources.map do |res|
176
- res.to_s.gsub(/\[/, "['").gsub(/\]/, "']") # ensure the title has quotes
177
- end
178
- if !args.first.nil?
179
- res[args.first.to_i].ai
180
- else
181
- output = "Resources not shown in any specific order\n".warning
182
- output += res.ai
183
- end
184
- end
185
-
186
- def classes(_args = [])
187
- scope.compiler.catalog.classes.ai
188
- end
189
- end
190
- end
191
- end