puppet-debugger 0.10.3 → 0.11.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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +16 -74
  3. data/.rubocop_todo.yml +59 -59
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +7 -0
  6. data/Gemfile +3 -2
  7. data/lib/plugins/puppet-debugger/input_responders/functions.rb +100 -1
  8. data/lib/puppet-debugger/cli.rb +1 -2
  9. data/lib/puppet-debugger/input_responder_plugin.rb +8 -1
  10. data/lib/puppet-debugger/support.rb +14 -2
  11. data/lib/puppet-debugger/version.rb +1 -1
  12. data/puppet-debugger.gemspec +2 -0
  13. data/spec/fixtures/modules/extlib/.editorconfig +14 -0
  14. data/spec/fixtures/modules/extlib/.fixtures.yml +3 -0
  15. data/spec/fixtures/modules/extlib/.github/CONTRIBUTING.md +184 -0
  16. data/spec/fixtures/modules/extlib/.github/ISSUE_TEMPLATE.md +26 -0
  17. data/spec/fixtures/modules/extlib/.github/PULL_REQUEST_TEMPLATE.md +20 -0
  18. data/spec/fixtures/modules/extlib/.gitignore +21 -0
  19. data/spec/fixtures/modules/extlib/.msync.yml +1 -0
  20. data/spec/fixtures/modules/extlib/.overcommit.yml +64 -0
  21. data/spec/fixtures/modules/extlib/.pmtignore +21 -0
  22. data/spec/fixtures/modules/extlib/.rspec +2 -0
  23. data/spec/fixtures/modules/extlib/.rspec_parallel +1 -0
  24. data/spec/fixtures/modules/extlib/.rubocop.yml +545 -0
  25. data/spec/fixtures/modules/extlib/.sync.yml +12 -0
  26. data/spec/fixtures/modules/extlib/.travis.yml +47 -0
  27. data/spec/fixtures/modules/extlib/.yardopts +2 -0
  28. data/spec/fixtures/modules/extlib/Gemfile +82 -0
  29. data/spec/fixtures/modules/extlib/Rakefile +82 -0
  30. data/spec/fixtures/modules/extlib/functions/dir_split.pp +25 -0
  31. data/spec/fixtures/modules/extlib/functions/file_separator.pp +7 -0
  32. data/spec/fixtures/modules/extlib/functions/mkdir_p.pp +20 -0
  33. data/spec/fixtures/modules/extlib/functions/path_join.pp +29 -0
  34. data/spec/fixtures/modules/extlib/lib/puppet/functions/cache_data.rb +11 -0
  35. data/spec/fixtures/modules/extlib/lib/puppet/functions/default_content.rb +11 -0
  36. data/spec/fixtures/modules/extlib/lib/puppet/functions/dump_args.rb +11 -0
  37. data/spec/fixtures/modules/extlib/lib/puppet/functions/echo.rb +11 -0
  38. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/cache_data.rb +48 -0
  39. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/default_content.rb +37 -0
  40. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/dump_args.rb +20 -0
  41. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/echo.rb +45 -0
  42. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/has_module.rb +33 -0
  43. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/ip_to_cron.rb +39 -0
  44. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/random_password.rb +63 -0
  45. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/resources_deep_merge.rb +87 -0
  46. data/spec/fixtures/modules/extlib/lib/puppet/functions/extlib/sort_by_version.rb +15 -0
  47. data/spec/fixtures/modules/extlib/lib/puppet/functions/ip_to_cron.rb +11 -0
  48. data/spec/fixtures/modules/extlib/lib/puppet/functions/random_password.rb +11 -0
  49. data/spec/fixtures/modules/extlib/lib/puppet/functions/resources_deep_merge.rb +11 -0
  50. data/spec/fixtures/modules/extlib/metadata.json +66 -0
  51. data/spec/input_responder_plugin_spec.rb +1 -1
  52. data/spec/input_responders/functions_spec.rb +46 -1
  53. data/spec/spec_helper.rb +5 -5
  54. data/spec/support_spec.rb +0 -8
  55. metadata +69 -4
  56. data/lib/puppet-debugger/support/functions.rb +0 -72
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56bddbd88e1782f203b95319c3774d48d0421cf328ffd82df8118edb76b87e55
4
- data.tar.gz: fec7e054cc3a5ce5bee5a0aada0ef970e4ca34518a8c25010bf817f32fe7b64f
3
+ metadata.gz: e98e90f35a13e50b2b3f02e7c8b5aa590daa90b31df68a868403fba0399ef35e
4
+ data.tar.gz: 10bee3e410b82be3c5ff0f8134b6ac1fb8c38cfc2a1d21a10bbd214059ba6434
5
5
  SHA512:
6
- metadata.gz: c6ef7818ca1de88313ad413332f2181e65b0fbd889a076cf45a26c69ae73e669d4435d371033adc28c6acaa9c0a8cc3a61e6924e699036a86194a758fb87a370
7
- data.tar.gz: 21b119f7e65f4224f2f68422434878a03c74f35cfdb844b428365b96d4d12b538c599224670f625821eaa5acd46f9cfd880370d7ccb3b983a74960125f438e0e
6
+ metadata.gz: c4ab1e0c51864faf1f53ac54b7a54f158e74e446888b6671a1d51ec48a8fb316b15419330d98d8e350b0e7df2875e47c3d88c840bd6b72e1679fc2ae5eb89a00
7
+ data.tar.gz: 6185292e9b63138cee9727c78d305e8ed00e463ba43b27a44d0ff7b0e42c0d76d098263a8a6987b771f89d561950fc5cc0eac8c637e332c53d69692c2dce11cf
data/.gitlab-ci.yml CHANGED
@@ -58,14 +58,13 @@ bump_and_tag:
58
58
  # script:
59
59
  # - "curl -X POST -F token=$PREPL_BUILD_TRIGGER_TOKEN -F ref=$REF https://gitlab.com/api/v3/projects/1146764/trigger/builds"
60
60
 
61
- .ruby_20: &ruby20
62
- image: ruby:2.0
63
-
64
- .ruby_21: &ruby21
65
- image: ruby:2.1
66
-
67
61
  .ruby_22: &ruby22
68
62
  image: ruby:2.2
63
+ script:
64
+ - gem install bundler -v 1.17.3 > /dev/null
65
+ - bundle install --without development validate
66
+ - bundle exec puppet module install puppetlabs-stdlib
67
+ - bundle exec rake spec
69
68
 
70
69
  .ruby_23: &ruby23
71
70
  image: ruby:2.3
@@ -76,8 +75,12 @@ bump_and_tag:
76
75
  .ruby_25: &ruby25
77
76
  image: ruby:2.5
78
77
 
78
+
79
+ .ruby_25: &ruby26
80
+ image: ruby:2.6
81
+
79
82
  gem_production:
80
- image: ruby:2.1
83
+ image: ruby:2.5
81
84
  tags:
82
85
  - ruby
83
86
  before_script:
@@ -88,54 +91,18 @@ gem_production:
88
91
  only:
89
92
  - tags
90
93
 
91
- puppet_38_ruby20:
92
- variables:
93
- PUPPET_GEM_VERSION: "~> 3.8.0"
94
- <<: *puppet_job_def
95
- <<: *ruby20
96
-
97
- puppet_38_ruby21:
98
- variables:
99
- PUPPET_GEM_VERSION: "~> 3.8.0"
100
- <<: *puppet_job_def
101
- <<: *ruby21
102
-
103
- puppet_43_ruby20:
104
- variables:
105
- PUPPET_GEM_VERSION: "~> 4.3.0"
106
- <<: *puppet_job_def
107
- <<: *ruby20
108
-
109
- puppet_43_ruby21:
110
- variables:
111
- PUPPET_GEM_VERSION: "~> 4.3.0"
112
- <<: *puppet_job_def
113
- <<: *ruby21
114
-
115
94
  puppet_43_ruby22:
116
95
  variables:
117
96
  PUPPET_GEM_VERSION: "~> 4.3.0"
118
97
  <<: *puppet_job_def
119
98
  <<: *ruby22
120
99
 
121
- puppet_44_ruby21:
122
- variables:
123
- PUPPET_GEM_VERSION: "~> 4.4.0"
124
- <<: *puppet_job_def
125
- <<: *ruby21
126
-
127
100
  puppet_44_ruby22:
128
101
  variables:
129
102
  PUPPET_GEM_VERSION: "~> 4.4.0"
130
103
  <<: *puppet_job_def
131
104
  <<: *ruby22
132
105
 
133
- puppet_45_ruby21:
134
- variables:
135
- PUPPET_GEM_VERSION: "~> 4.5.0"
136
- <<: *puppet_job_def
137
- <<: *ruby21
138
-
139
106
  puppet_46_ruby22:
140
107
  variables:
141
108
  PUPPET_GEM_VERSION: "~> 4.6.0"
@@ -154,37 +121,6 @@ puppet_410_ruby24:
154
121
  <<: *puppet_job_def
155
122
  <<: *ruby24
156
123
 
157
- puppet_50_ruby24:
158
- variables:
159
- PUPPET_GEM_VERSION: "~> 5.0"
160
- <<: *puppet_job_def
161
- <<: *ruby24
162
-
163
- puppet_51_ruby24:
164
- variables:
165
- PUPPET_GEM_VERSION: "~> 5.1"
166
- <<: *puppet_job_def
167
- <<: *ruby24
168
-
169
- puppet_52_ruby24:
170
- variables:
171
- PUPPET_GEM_VERSION: "~> 5.2"
172
- <<: *puppet_job_def
173
- <<: *ruby24
174
-
175
- puppet_53_ruby24:
176
- variables:
177
- PUPPET_GEM_VERSION: "~> 5.3"
178
- <<: *puppet_job_def
179
- <<: *ruby24
180
-
181
-
182
- puppet_54_ruby24:
183
- variables:
184
- PUPPET_GEM_VERSION: "~> 5.4"
185
- <<: *puppet_job_def
186
- <<: *ruby24
187
-
188
124
  puppet_55_ruby24:
189
125
  variables:
190
126
  PUPPET_GEM_VERSION: "~> 5.5"
@@ -196,3 +132,9 @@ puppet_60_ruby25:
196
132
  PUPPET_GEM_VERSION: "~> 6.0"
197
133
  <<: *puppet_job_def
198
134
  <<: *ruby25
135
+
136
+ puppet_60_ruby25:
137
+ variables:
138
+ PUPPET_GEM_VERSION: "~> 6.4"
139
+ <<: *puppet_job_def
140
+ <<: *ruby25
data/.rubocop_todo.yml CHANGED
@@ -12,12 +12,12 @@
12
12
  # SupportedStyles: start_of_line, def
13
13
  Lint/DefEndAlignment:
14
14
  Exclude:
15
- - 'lib/puppet-debugger/support/errors.rb'
15
+ - "lib/puppet-debugger/support/errors.rb"
16
16
 
17
17
  # Offense count: 1
18
18
  Lint/ElseLayout:
19
19
  Exclude:
20
- - 'lib/puppet-debugger/support/play.rb'
20
+ - "lib/puppet-debugger/support/play.rb"
21
21
 
22
22
  # Offense count: 10
23
23
  # Cop supports --auto-correct.
@@ -25,39 +25,39 @@ Lint/ElseLayout:
25
25
  # SupportedStyles: keyword, variable, start_of_line
26
26
  Lint/EndAlignment:
27
27
  Exclude:
28
- - 'lib/puppet-debugger/code/code_file.rb'
29
- - 'lib/puppet-debugger/code/code_range.rb'
30
- - 'lib/puppet-debugger/code/loc.rb'
31
- - 'lib/trollop.rb'
28
+ - "lib/puppet-debugger/code/code_file.rb"
29
+ - "lib/puppet-debugger/code/code_range.rb"
30
+ - "lib/puppet-debugger/code/loc.rb"
31
+ - "lib/trollop.rb"
32
32
 
33
33
  # Offense count: 3
34
34
  Lint/HandleExceptions:
35
35
  Exclude:
36
- - 'lib/puppet-debugger/support.rb'
37
- - 'lib/trollop.rb'
36
+ - "lib/puppet-debugger/support.rb"
37
+ - "lib/trollop.rb"
38
38
 
39
39
  # Offense count: 1
40
40
  Lint/NestedMethodDefinition:
41
41
  Exclude:
42
- - 'lib/trollop.rb'
42
+ - "lib/trollop.rb"
43
43
 
44
44
  # Offense count: 1
45
45
  Lint/ShadowingOuterLocalVariable:
46
46
  Exclude:
47
- - 'lib/puppet-debugger/support/input_responders.rb'
47
+ - "lib/puppet-debugger/support/input_responders.rb"
48
48
 
49
49
  # Offense count: 18
50
50
  Lint/UselessAssignment:
51
51
  Exclude:
52
- - 'lib/puppet-debugger/support.rb'
53
- - 'lib/puppet-debugger/support/environment.rb'
54
- - 'lib/puppet-debugger/support/errors.rb'
55
- - 'lib/puppet-debugger/support/functions.rb'
56
- - 'lib/puppet-debugger/support/input_responders.rb'
57
- - 'lib/puppet-debugger/support/node.rb'
58
- - 'lib/puppet-debugger/support/play.rb'
59
- - 'lib/puppet/application/debugger.rb'
60
- - 'spec/support_spec.rb'
52
+ - "lib/puppet-debugger/support.rb"
53
+ - "lib/puppet-debugger/support/environment.rb"
54
+ - "lib/puppet-debugger/support/errors.rb"
55
+ - "lib/puppet-debugger/support/functions.rb"
56
+ - "lib/puppet-debugger/support/input_responders.rb"
57
+ - "lib/puppet-debugger/support/node.rb"
58
+ - "lib/puppet-debugger/support/play.rb"
59
+ - "lib/puppet/application/debugger.rb"
60
+ - "spec/support_spec.rb"
61
61
 
62
62
  # Offense count: 22
63
63
  Metrics/AbcSize:
@@ -107,78 +107,78 @@ Metrics/PerceivedComplexity:
107
107
  # Cop supports --auto-correct.
108
108
  Performance/RedundantMatch:
109
109
  Exclude:
110
- - 'lib/awesome_print/ext/awesome_puppet.rb'
110
+ - "lib/awesome_print/ext/awesome_puppet.rb"
111
111
 
112
112
  # Offense count: 8
113
113
  Style/AccessorMethodName:
114
114
  Exclude:
115
- - 'lib/puppet-debugger/support/compiler.rb'
116
- - 'lib/puppet-debugger/support/environment.rb'
117
- - 'lib/puppet-debugger/support/facts.rb'
118
- - 'lib/puppet-debugger/support/input_responders.rb'
119
- - 'lib/puppet-debugger/support/node.rb'
120
- - 'lib/puppet-debugger/support/scope.rb'
115
+ - "lib/puppet-debugger/support/compiler.rb"
116
+ - "lib/puppet-debugger/support/environment.rb"
117
+ - "lib/puppet-debugger/support/facts.rb"
118
+ - "lib/puppet-debugger/support/input_responders.rb"
119
+ - "lib/puppet-debugger/support/node.rb"
120
+ - "lib/puppet-debugger/support/scope.rb"
121
121
 
122
122
  # Offense count: 2
123
123
  # Configuration parameters: EnforcedStyle, SupportedStyles.
124
124
  # SupportedStyles: nested, compact
125
125
  Style/ClassAndModuleChildren:
126
126
  Exclude:
127
- - 'lib/puppet/application/debugger.rb'
128
- - 'spec/spec_helper.rb'
127
+ - "lib/puppet/application/debugger.rb"
128
+ - "spec/spec_helper.rb"
129
129
 
130
130
  # Offense count: 21
131
131
  Style/Documentation:
132
132
  Exclude:
133
- - 'spec/**/*'
134
- - 'test/**/*'
135
- - 'lib/awesome_print/ext/awesome_puppet.rb'
136
- - 'lib/puppet-debugger/cli.rb'
137
- - 'lib/puppet-debugger/code/code_file.rb'
138
- - 'lib/puppet-debugger/support.rb'
139
- - 'lib/puppet-debugger/support/compiler.rb'
140
- - 'lib/puppet-debugger/support/environment.rb'
141
- - 'lib/puppet-debugger/support/errors.rb'
142
- - 'lib/puppet-debugger/support/facts.rb'
143
- - 'lib/puppet-debugger/support/functions.rb'
144
- - 'lib/puppet-debugger/support/input_responders.rb'
145
- - 'lib/puppet-debugger/support/node.rb'
146
- - 'lib/puppet-debugger/support/play.rb'
147
- - 'lib/puppet-debugger/support/scope.rb'
148
- - 'lib/puppet/application/debugger.rb'
149
- - 'lib/trollop.rb'
133
+ - "spec/**/*"
134
+ - "test/**/*"
135
+ - "lib/awesome_print/ext/awesome_puppet.rb"
136
+ - "lib/puppet-debugger/cli.rb"
137
+ - "lib/puppet-debugger/code/code_file.rb"
138
+ - "lib/puppet-debugger/support.rb"
139
+ - "lib/puppet-debugger/support/compiler.rb"
140
+ - "lib/puppet-debugger/support/environment.rb"
141
+ - "lib/puppet-debugger/support/errors.rb"
142
+ - "lib/puppet-debugger/support/facts.rb"
143
+ - "lib/puppet-debugger/support/functions.rb"
144
+ - "lib/puppet-debugger/support/input_responders.rb"
145
+ - "lib/puppet-debugger/support/node.rb"
146
+ - "lib/puppet-debugger/support/play.rb"
147
+ - "lib/puppet-debugger/support/scope.rb"
148
+ - "lib/puppet/application/debugger.rb"
149
+ - "lib/trollop.rb"
150
150
 
151
151
  # Offense count: 2
152
152
  Style/DoubleNegation:
153
153
  Exclude:
154
- - 'lib/puppet-debugger/debugger_code.rb'
154
+ - "lib/puppet-debugger/debugger_code.rb"
155
155
 
156
156
  # Offense count: 10
157
157
  # Configuration parameters: MinBodyLength.
158
158
  Style/GuardClause:
159
159
  Exclude:
160
- - 'lib/puppet-debugger/cli.rb'
161
- - 'lib/puppet-debugger/support.rb'
162
- - 'lib/puppet-debugger/support/input_responders.rb'
163
- - 'lib/puppet-debugger/support/play.rb'
164
- - 'lib/trollop.rb'
160
+ - "lib/puppet-debugger/cli.rb"
161
+ - "lib/puppet-debugger/support.rb"
162
+ - "lib/puppet-debugger/support/input_responders.rb"
163
+ - "lib/puppet-debugger/support/play.rb"
164
+ - "lib/trollop.rb"
165
165
  - puppet-debugger.gemspec
166
166
 
167
167
  # Offense count: 2
168
168
  Style/IdenticalConditionalBranches:
169
169
  Exclude:
170
- - 'lib/puppet-debugger/support/play.rb'
170
+ - "lib/puppet-debugger/support/play.rb"
171
171
 
172
172
  # Offense count: 2
173
173
  Style/MethodMissing:
174
174
  Exclude:
175
- - 'lib/puppet-debugger/debugger_code.rb'
176
- - 'lib/trollop.rb'
175
+ - "lib/puppet-debugger/debugger_code.rb"
176
+ - "lib/trollop.rb"
177
177
 
178
178
  # Offense count: 1
179
179
  Style/MultilineTernaryOperator:
180
180
  Exclude:
181
- - 'lib/puppet/application/debugger.rb'
181
+ - "lib/puppet/application/debugger.rb"
182
182
 
183
183
  # Offense count: 2
184
184
  # Cop supports --auto-correct.
@@ -186,8 +186,8 @@ Style/MultilineTernaryOperator:
186
186
  # SupportedStyles: predicate, comparison
187
187
  Style/NumericPredicate:
188
188
  Exclude:
189
- - 'spec/**/*'
190
- - 'lib/puppet-debugger/code/code_range.rb'
189
+ - "spec/**/*"
190
+ - "lib/puppet-debugger/code/code_range.rb"
191
191
 
192
192
  # Offense count: 3
193
193
  # Cop supports --auto-correct.
@@ -195,11 +195,11 @@ Style/NumericPredicate:
195
195
  # SupportedStyles: slashes, percent_r, mixed
196
196
  Style/RegexpLiteral:
197
197
  Exclude:
198
- - 'spec/puppet_debugger_spec.rb'
198
+ - "spec/puppet_debugger_spec.rb"
199
199
 
200
200
  # Offense count: 1
201
201
  # Cop supports --auto-correct.
202
202
  # Configuration parameters: AllowAsExpressionSeparator.
203
203
  Style/Semicolon:
204
204
  Exclude:
205
- - 'lib/puppet/application/debugger.rb'
205
+ - "lib/puppet/application/debugger.rb"
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.11.0
4
+
5
+ - Fixes native functions not shown in functions command
6
+ - Prints functions into a table with proper namespace shown
7
+ - Adds table print gem
8
+ - Adds rb-readline for universal readline support on all platforms
9
+
3
10
  ## 0.10.3
4
11
 
5
12
  - Remove warning message about incorrect version
data/Gemfile CHANGED
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
  source 'http://rubygems.org'
3
3
  gem 'awesome_print', '~> 1.7'
4
- gem 'facterdb', '>= 0.4.0'
4
+ gem 'facterdb', '>= 0.5.0'
5
5
  gem 'puppet', ENV['PUPPET_GEM_VERSION'] || '~> 4.10.1'
6
6
  gem 'pluginator', '~> 1.5.0'
7
-
7
+ gem 'rb-readline'
8
+ gem 'table_print'
8
9
  group :test, :development do
9
10
  # ruby versions prior to 2.0 cannot install json_pure 2.0.2+
10
11
  gem 'bundler'
@@ -1,15 +1,114 @@
1
1
  require 'puppet-debugger/input_responder_plugin'
2
+ require 'table_print'
3
+
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Functions < InputResponderPlugin
5
7
  COMMAND_WORDS = %w(functions)
6
8
  SUMMARY = 'List all the functions available in the environment.'
7
9
  COMMAND_GROUP = :environment
10
+ FUNC_NATIVE_NAME_REGEX = %r{\Afunction\s([\w\:]+)}
11
+ FUNC_V4_NAME_REGEX = %r{Puppet\:\:Functions.create_function\s?\(?\:?\'?([\w\:]+)}
8
12
 
9
13
  def run(args = [])
10
14
  filter = args.first || ''
11
- function_map.keys.sort.grep(/^#{Regexp.escape(filter)}/)
15
+ TablePrint::Printer.table_print(sorted_list(filter), [:full_name, :mod_name])
16
+ end
17
+
18
+ def sorted_list(filter = '')
19
+ search = /#{Regexp.escape(filter)}/
20
+ function_map.values.find_all do | v|
21
+ "#{v[:mod_name]}_#{v[:full_name]}" =~ search
22
+ end.sort {|a,b| a[:full_name] <=> b[:full_name]}
23
+ end
24
+
25
+ # append a () to functions so we know they are functions
26
+ def func_list
27
+ # ideally we should get a list of function names via the puppet loader
28
+ function_map.map { |name, metadata| "#{metadata[:full_name]}()" }
29
+ end
30
+
31
+ # @return [Hash] - a map of all the functions
32
+ def function_map
33
+ functions = {}
34
+ function_files.each do |file|
35
+ obj = function_obj(file)
36
+ # return the last matched in cases where rbenv might be involved
37
+ functions[obj[:full_name]] = obj
38
+ end
39
+ functions
40
+ end
41
+
42
+
43
+ def lib_dirs(module_dirs = modules_paths)
44
+ dirs = module_dirs.map do |mod_dir|
45
+ Dir["#{mod_dir}/*/lib"].entries
46
+ end.flatten
47
+ dirs + [puppet_debugger_lib_dir]
48
+ end
49
+
50
+
51
+ # @return [Array] - returns a array of the parentname and function name
52
+ def function_obj(file)
53
+ namespace = nil
54
+ name = nil
55
+ if file =~ /\.pp/
56
+ File.readlines(file, :encoding => 'UTF-8').find do |line|
57
+ # TODO: not getting namespace for functio
58
+ if line.match(FUNC_NATIVE_NAME_REGEX)
59
+ namespace, name = $1.split('::', 2)
60
+ name = namespace if name.nil?
61
+ namespace = '' if namespace == name
62
+ end
63
+ end
64
+ elsif file.include?('lib/puppet/functions')
65
+ File.readlines(file, :encoding => 'UTF-8').find do |line|
66
+ if line.match(FUNC_V4_NAME_REGEX)
67
+ namespace, name = $1.split('::', 2)
68
+ name = namespace if name.nil?
69
+ namespace = '' if namespace == name
70
+ end
71
+ end
72
+ end
73
+ name ||= File.basename(file, File.extname(file))
74
+ match = file.match('\/(?<mod>[\w\-\.]+)\/(lib|functions|manifests)')
75
+ summary_match = File.read(file, :encoding => 'UTF-8').match(/@summary\s(.*)/)
76
+ summary = summary_match[1] if summary_match
77
+
78
+ # match = file.match('(?<mod>\w+)\/functions|manifests|lib')
79
+ mod_name = match[:mod] unless match.nil?
80
+ full_name = namespace.nil? || namespace.empty? ? name : name.prepend("#{namespace}::")
81
+ {namespace: namespace, summary: summary, mod_name: mod_name, name: name, full_name: full_name, file: file}
82
+ end
83
+
84
+ private
85
+
86
+ # load all the lib dirs so puppet can find the functions
87
+ # at this time, this function is not being used
88
+ def load_lib_dirs(module_dirs = modules_paths)
89
+ lib_dirs(module_dirs).each do |lib|
90
+ $LOAD_PATH << lib
91
+ end
12
92
  end
93
+
94
+ # returns a array of function files which is only required
95
+ # when displaying the function map, puppet will load each function on demand
96
+ # in the future we may want to utilize the puppet loaders to find these things
97
+ def function_files
98
+ search_dirs = lib_dirs.map do |lib_dir|
99
+ [File.join(lib_dir, 'puppet', 'functions', '**', '*.rb'),
100
+ File.join(lib_dir, 'functions', '**', '*.rb'),
101
+ File.join(File.dirname(lib_dir), 'functions', '**', '*.pp'),
102
+ File.join(lib_dir, 'puppet', 'parser', 'functions', '*.rb')]
103
+ end
104
+
105
+ # add puppet lib directories
106
+ search_dirs << [File.join(puppet_lib_dir, 'puppet', 'functions', '**', '*.rb'),
107
+ File.join(puppet_lib_dir, 'puppet', 'parser', 'functions', '*.rb')]
108
+ Dir.glob(search_dirs.flatten)
109
+ end
110
+
111
+
13
112
  end
14
113
  end
15
114
  end
@@ -69,8 +69,7 @@ module PuppetDebugger
69
69
  variables = scope.to_hash.keys
70
70
  # prepend a :: to topscope variables
71
71
  scoped_vars = variables.map { |k, _v| scope.compiler.topscope.exist?(k) ? "$::#{k}" : "$#{k}" }
72
- # append a () to functions so we know they are functions
73
- funcs = function_map.keys.map { |k| "#{k.split('::').last}()" }
72
+ funcs = PuppetDebugger::InputResponders::Functions.instance.func_list
74
73
  PuppetDebugger::InputResponders::Datatypes.instance.debugger = self
75
74
  (scoped_vars + funcs + static_responder_list + PuppetDebugger::InputResponders::Datatypes.instance.all_data_types).uniq.sort
76
75
  end
@@ -8,7 +8,7 @@ module PuppetDebugger
8
8
  extend Forwardable
9
9
  attr_accessor :debugger
10
10
  def_delegators :debugger, :scope, :node, :environment, :loaders, :puppet_environment,
11
- :add_hook, :handle_input, :delete_hook, :function_map
11
+ :add_hook, :handle_input, :delete_hook, :puppet_lib_dir, :modules_paths
12
12
  def_delegators :scope, :compiler, :catalog
13
13
  def_delegators :node, :facts
14
14
 
@@ -53,5 +53,12 @@ module PuppetDebugger
53
53
  def run(args = [])
54
54
  raise NotImplementedError
55
55
  end
56
+
57
+ # this is the lib directory of this gem
58
+ # in order to load any puppet functions from this gem we need to add the lib path
59
+ # of this gem
60
+ def puppet_debugger_lib_dir
61
+ File.expand_path(File.join(File.dirname(File.dirname(File.dirname(__FILE__))), 'lib'))
62
+ end
56
63
  end
57
64
  end
@@ -15,7 +15,6 @@ module PuppetDebugger
15
15
  include PuppetDebugger::Support::Environment
16
16
  include PuppetDebugger::Support::Facts
17
17
  include PuppetDebugger::Support::Scope
18
- include PuppetDebugger::Support::Functions
19
18
  include PuppetDebugger::Support::Node
20
19
  include PuppetDebugger::Support::Loader
21
20
 
@@ -44,14 +43,27 @@ module PuppetDebugger
44
43
  end
45
44
  end
46
45
 
46
+ def lib_dirs(module_dirs = modules_paths)
47
+ dirs = module_dirs.map do |mod_dir|
48
+ Dir["#{mod_dir}/*/lib"].entries
49
+ end.flatten
50
+ dirs + [puppet_debugger_lib_dir]
51
+ end
52
+
47
53
  def static_responder_list
48
54
  PuppetDebugger::InputResponders::Commands.command_list
49
55
  end
50
56
 
57
+ # returns either the module name or puppet version
58
+ def mod_finder
59
+ @mod_finder ||= Regexp.new('\/([\w\-\.]+)\/lib')
60
+ end
61
+
51
62
  # this is the lib directory of this gem
52
63
  # in order to load any puppet functions from this gem we need to add the lib path
53
64
  # of this gem
54
- def puppet_repl_lib_dir
65
+ # @deprecated
66
+ def puppet_debugger_lib_dir
55
67
  File.expand_path(File.join(File.dirname(File.dirname(File.dirname(__FILE__))), 'lib'))
56
68
  end
57
69
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PuppetDebugger
4
- VERSION = '0.10.3'
4
+ VERSION = '0.11.0'
5
5
  end
@@ -30,7 +30,9 @@ Gem::Specification.new do |s|
30
30
  s.licenses = ["MIT"]
31
31
  s.rubygems_version = "2.4.5.1"
32
32
  s.summary = "A repl based debugger for the puppet language"
33
+ s.add_runtime_dependency(%q<table_print>, [">= 1.0.0"])
33
34
  s.add_runtime_dependency(%q<pluginator>, ["~> 1.5.0"])
35
+ s.add_runtime_dependency(%q<rb-readline>, ['>= 0.5.5'])
34
36
  s.add_runtime_dependency(%q<puppet>, [">= 3.8"])
35
37
  s.add_runtime_dependency(%q<facterdb>, [">= 0.4.0"])
36
38
  s.add_runtime_dependency(%q<awesome_print>, ["~> 1.7"])
@@ -0,0 +1,14 @@
1
+ # editorconfig.org
2
+
3
+ # MANAGED BY MODULESYNC
4
+
5
+ root = true
6
+
7
+ [*]
8
+ charset = utf-8
9
+ end_of_line = lf
10
+ indent_size = 2
11
+ tab_width = 2
12
+ indent_style = space
13
+ insert_final_newline = true
14
+ trim_trailing_whitespace = true
@@ -0,0 +1,3 @@
1
+ fixtures:
2
+ repositories:
3
+ stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib.git"