puppet-debugger 0.16.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +10 -26
  3. data/.rubocop.yml +64 -232
  4. data/.rubocop_todo.yml +89 -147
  5. data/.ruby-version +1 -1
  6. data/.vscode/launch.json +15 -0
  7. data/CHANGELOG.md +34 -0
  8. data/Gemfile +7 -5
  9. data/README.md +29 -261
  10. data/Rakefile +11 -12
  11. data/bin/pdb +1 -1
  12. data/lib/awesome_print/ext/awesome_puppet.rb +10 -8
  13. data/lib/plugins/puppet-debugger/input_responders/benchmark.rb +5 -4
  14. data/lib/plugins/puppet-debugger/input_responders/classes.rb +14 -2
  15. data/lib/plugins/puppet-debugger/input_responders/classification.rb +4 -2
  16. data/lib/plugins/puppet-debugger/input_responders/commands.rb +18 -18
  17. data/lib/plugins/puppet-debugger/input_responders/datatypes.rb +22 -6
  18. data/lib/plugins/puppet-debugger/input_responders/environment.rb +4 -2
  19. data/lib/plugins/puppet-debugger/input_responders/exit.rb +5 -3
  20. data/lib/plugins/puppet-debugger/input_responders/facterdb_filter.rb +4 -2
  21. data/lib/plugins/puppet-debugger/input_responders/facts.rb +4 -2
  22. data/lib/plugins/puppet-debugger/input_responders/functions.rb +34 -32
  23. data/lib/plugins/puppet-debugger/input_responders/help.rb +4 -2
  24. data/lib/plugins/puppet-debugger/input_responders/krt.rb +4 -2
  25. data/lib/plugins/puppet-debugger/input_responders/play.rb +22 -24
  26. data/lib/plugins/puppet-debugger/input_responders/reset.rb +5 -3
  27. data/lib/plugins/puppet-debugger/input_responders/resources.rb +16 -7
  28. data/lib/plugins/puppet-debugger/input_responders/set.rb +34 -32
  29. data/lib/plugins/puppet-debugger/input_responders/stacktrace.rb +31 -0
  30. data/lib/plugins/puppet-debugger/input_responders/types.rb +6 -2
  31. data/lib/plugins/puppet-debugger/input_responders/vars.rb +8 -7
  32. data/lib/plugins/puppet-debugger/input_responders/whereami.rb +5 -3
  33. data/lib/puppet-debugger.rb +1 -45
  34. data/lib/puppet-debugger/cli.rb +130 -92
  35. data/lib/puppet-debugger/code/code_file.rb +13 -14
  36. data/lib/puppet-debugger/code/code_range.rb +5 -3
  37. data/lib/puppet-debugger/code/loc.rb +1 -1
  38. data/lib/puppet-debugger/debugger_code.rb +2 -0
  39. data/lib/puppet-debugger/hooks.rb +15 -16
  40. data/lib/puppet-debugger/input_responder_plugin.rb +54 -52
  41. data/lib/puppet-debugger/monkey_patches.rb +57 -0
  42. data/lib/puppet-debugger/plugin_test_helper.rb +9 -8
  43. data/lib/puppet-debugger/support.rb +27 -17
  44. data/lib/puppet-debugger/support/environment.rb +6 -5
  45. data/lib/puppet-debugger/support/errors.rb +25 -27
  46. data/lib/puppet-debugger/support/facts.rb +5 -5
  47. data/lib/puppet-debugger/support/node.rb +4 -7
  48. data/lib/puppet-debugger/support/scope.rb +29 -0
  49. data/lib/puppet-debugger/trollop.rb +38 -31
  50. data/lib/puppet-debugger/version.rb +1 -1
  51. data/lib/puppet/application/debugger.rb +151 -126
  52. data/output.json +1 -0
  53. data/puppet-debugger.gemspec +17 -15
  54. data/spec/awesome_print/ext/awesome_puppet_spec.rb +30 -30
  55. data/spec/fixtures/pe-xl-core-0.puppet.vm.json +1 -0
  56. data/spec/fixtures/sample_start_debugger.pp +3 -2
  57. data/spec/hooks_spec.rb +33 -35
  58. data/spec/input_responder_plugin_spec.rb +7 -6
  59. data/spec/input_responders/benchmark_spec.rb +3 -1
  60. data/spec/input_responders/classes_spec.rb +12 -13
  61. data/spec/input_responders/classification_spec.rb +4 -2
  62. data/spec/input_responders/commands_spec.rb +2 -0
  63. data/spec/input_responders/datatypes_spec.rb +8 -2
  64. data/spec/input_responders/environment_spec.rb +2 -0
  65. data/spec/input_responders/exit_spec.rb +9 -11
  66. data/spec/input_responders/facterdb_filter_spec.rb +2 -0
  67. data/spec/input_responders/facts_spec.rb +2 -0
  68. data/spec/input_responders/functions_spec.rb +30 -28
  69. data/spec/input_responders/help_spec.rb +5 -3
  70. data/spec/input_responders/krt_spec.rb +3 -1
  71. data/spec/input_responders/play_spec.rb +10 -20
  72. data/spec/input_responders/reset_spec.rb +2 -0
  73. data/spec/input_responders/resources_spec.rb +7 -1
  74. data/spec/input_responders/set_spec.rb +3 -1
  75. data/spec/input_responders/stacktrace_spec.rb +15 -0
  76. data/spec/input_responders/types_spec.rb +2 -0
  77. data/spec/input_responders/vars_spec.rb +4 -4
  78. data/spec/input_responders/whereami_spec.rb +2 -0
  79. data/spec/pdb_spec.rb +0 -9
  80. data/spec/puppet/application/debugger_spec.rb +35 -17
  81. data/spec/puppet_debugger_spec.rb +81 -83
  82. data/spec/remote_node_spec.rb +1 -5
  83. data/spec/spec_helper.rb +22 -18
  84. data/spec/support_spec.rb +3 -5
  85. data/test_matrix.rb +1 -1
  86. metadata +56 -22
data/bin/pdb CHANGED
@@ -3,5 +3,5 @@
3
3
 
4
4
  require 'puppet-debugger'
5
5
 
6
- puts "The debugger pdb command will be removed in a future release please use puppet-debugger or puppet debugger instead".warning
6
+ puts 'The debugger pdb command will be removed in a future release please use puppet-debugger or puppet debugger instead'.warning
7
7
  PuppetDebugger::Cli.start
@@ -52,6 +52,7 @@ module AwesomePrint
52
52
 
53
53
  def awesome_puppet_resource(object)
54
54
  return '' if object.nil?
55
+
55
56
  resource_object = object.to_ral
56
57
  awesome_puppet_type(resource_object)
57
58
  end
@@ -59,16 +60,17 @@ module AwesomePrint
59
60
  def awesome_puppet_type(object)
60
61
  return '' if object.nil?
61
62
  return object.to_s unless object.respond_to?(:name) && object.respond_to?(:title) && object.respond_to?(:to_hash)
62
- if Array.new.respond_to?(:to_h)
63
- # to_h is only supported in ruby 2.1+
64
- h = object.to_hash.merge(name: object.name, title: object.title).sort.to_h
65
- else
66
- h = object.to_hash.merge(name: object.name, title: object.title)
67
- end
68
- res_str = awesome_hash(JSON.parse(h.to_json)) #converting to json removes symbols
63
+
64
+ h = if [].respond_to?(:to_h)
65
+ # to_h is only supported in ruby 2.1+
66
+ object.to_hash.merge(name: object.name, title: object.title).sort.to_h
67
+ else
68
+ object.to_hash.merge(name: object.name, title: object.title)
69
+ end
70
+ res_str = awesome_hash(JSON.parse(h.to_json)) # converting to json removes symbols
69
71
  "#{object.class} #{res_str}"
70
72
  end
71
73
  end
72
74
  end
73
75
 
74
- AwesomePrint::Formatter.send(:include, AwesomePrint::Puppet)
76
+ AwesomePrint::Formatter.include AwesomePrint::Puppet
@@ -1,14 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'benchmark'
2
4
  require 'puppet-debugger/input_responder_plugin'
3
5
  module PuppetDebugger
4
6
  module InputResponders
5
7
  class Benchmark < InputResponderPlugin
6
- COMMAND_WORDS = %w(benchmark bm)
8
+ COMMAND_WORDS = %w[benchmark bm].freeze
7
9
  SUMMARY = 'Benchmark your Puppet code.'
8
10
  COMMAND_GROUP = :tools
9
11
 
10
12
  def run(args = [])
11
- if args.count > 0
13
+ if args.count.positive?
12
14
  enable(false)
13
15
  out = debugger.handle_input(args.first)
14
16
  disable
@@ -34,7 +36,6 @@ module PuppetDebugger
34
36
  'On'
35
37
  end
36
38
  end
37
-
38
39
  end
39
40
  end
40
- end
41
+ end
@@ -1,15 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Classes < InputResponderPlugin
5
- COMMAND_WORDS = %w(classes)
7
+ COMMAND_WORDS = %w[classes].freeze
6
8
  SUMMARY = 'List all the classes current in the catalog.'
7
9
  COMMAND_GROUP = :scope
8
10
 
9
11
  def run(args = [])
10
- debugger.scope.compiler.catalog.classes.ai
12
+ filter = args
13
+ classes = find_classes(debugger.catalog.classes, filter)
14
+ classes.ai
11
15
  end
12
16
 
17
+ def find_classes(classes, filter = [])
18
+ return classes if filter.nil? || filter.empty?
19
+
20
+ filter_string = filter.join(' ').downcase
21
+ classes.find_all do |klass|
22
+ klass.downcase.include?(filter_string)
23
+ end
24
+ end
13
25
  end
14
26
  end
15
27
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Classification < InputResponderPlugin
5
- COMMAND_WORDS = %w(classification)
7
+ COMMAND_WORDS = %w[classification].freeze
6
8
  SUMMARY = 'Show the classification details of the node.'
7
9
  COMMAND_GROUP = :node
8
10
 
9
- def run(args = [])
11
+ def run(_args = [])
10
12
  debugger.node.classes.ai
11
13
  end
12
14
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Commands < InputResponderPlugin
5
- COMMAND_WORDS = %w(commands)
7
+ COMMAND_WORDS = %w[commands].freeze
6
8
  SUMMARY = 'List all available commands, aka. this screen'
7
9
  COMMAND_GROUP = :help
8
10
 
9
- def run(args = [])
11
+ def run(_args = [])
10
12
  commands_list
11
13
  end
12
14
 
@@ -31,9 +33,9 @@ module PuppetDebugger
31
33
  def command_groups
32
34
  unless @command_groups
33
35
  @command_groups = {}
34
- self.class.command_output.each do | item|
36
+ self.class.command_output.each do |item|
35
37
  if @command_groups[item[:group]]
36
- @command_groups[item[:group]].merge!({ item[:words].first => item[:summary] })
38
+ @command_groups[item[:group]].merge!(item[:words].first => item[:summary])
37
39
  else
38
40
  @command_groups[item[:group]] = { item[:words].first => item[:summary] }
39
41
  end
@@ -43,12 +45,12 @@ module PuppetDebugger
43
45
  end
44
46
 
45
47
  def self.command_list_regex
46
- out = command_list.map {|n| "^#{n}"}.join('|')
47
- %r(#{out})
48
+ out = command_list.map { |n| "^#{n}" }.join('|')
49
+ /#{out}/
48
50
  end
49
51
 
50
52
  def self.command_list
51
- command_output.map{|f| f[:words] }.flatten
53
+ command_output.map { |f| f[:words] }.flatten
52
54
  end
53
55
 
54
56
  def self.command_output
@@ -56,22 +58,20 @@ module PuppetDebugger
56
58
  end
57
59
 
58
60
  def self.plugins
59
- begin
60
- debug_plugins = Pluginator.find('puppet-debugger')
61
- debug_plugins["input_responders"]
62
- rescue NoMethodError => e
63
- raise PuppetDebugger::Exception::InvalidCommand.new(message: "Unsupported gem version. Please update with: gem update --system")
64
- end
61
+ debug_plugins = Pluginator.find('puppet-debugger')
62
+ debug_plugins['input_responders']
63
+ rescue NoMethodError
64
+ raise PuppetDebugger::Exception::InvalidCommand.new(message: 'Unsupported gem version. Please update with: gem update --system')
65
65
  end
66
66
 
67
67
  # @param name [String] - the name of the command that is associated with a plugin
68
68
  # @return [PuppetDebugger::InputResponders::InputResponderPlugin]
69
69
  def self.plugin_from_command(name)
70
- p = plugins.find {|p| p::COMMAND_WORDS.include?(name)}
71
- raise PuppetDebugger::Exception::InvalidCommand.new(message: "invalid command #{name}") unless p
72
- p
73
- end
70
+ plug = plugins.find { |p| p::COMMAND_WORDS.include?(name) }
71
+ raise PuppetDebugger::Exception::InvalidCommand.new(message: "invalid command #{name}") unless plug
74
72
 
73
+ plug
74
+ end
75
75
  end
76
76
  end
77
- end
77
+ end
@@ -1,13 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Datatypes < InputResponderPlugin
5
- COMMAND_WORDS = %w(datatypes)
7
+ COMMAND_WORDS = %w[datatypes].freeze
6
8
  SUMMARY = 'List all the datatypes available in the environment.'
7
9
  COMMAND_GROUP = :environment
8
10
 
9
11
  def run(args = [])
10
- all_data_types.sort.ai
12
+ filter = args
13
+ datatypes = find_datatypes(all_data_types.sort, filter)
14
+ datatypes.ai
15
+ end
16
+
17
+ def find_datatypes(datatypes, filter = [])
18
+ return datatypes if filter.nil? || filter.empty?
19
+
20
+ filter_string = filter.join(' ').downcase
21
+ datatypes.find_all do |datatype|
22
+ datatype.downcase.include?(filter_string)
23
+ end
11
24
  end
12
25
 
13
26
  # @return [Array[String]] - returns a list of all the custom data types found in all the modules in the environment
@@ -17,15 +30,19 @@ module PuppetDebugger
17
30
  files.map do |f|
18
31
  m = File.read(f).match(/type\s([a-z\d\:_]+)/i)
19
32
  next if m =~ /type|alias/ # can't figure out the best way to filter type and alias out
33
+
20
34
  m[1] if m && m[1] =~ /::/
21
35
  end.uniq.compact
22
36
  end
23
37
 
38
+ # loaders.instance_variable_get(:@loaders_by_name)['boltlib']
39
+ # [:func_4x, :func_4xpp, :func_3x, :datatype, :type_pp,
40
+ # :resource_type_pp, :plan, :task]
24
41
  # @return [Array[String]] - a list of core data types
25
42
  def core_datatypes
26
- loaders.implementation_registry
27
- .instance_variable_get(:'@implementations_per_type_name')
28
- .keys.find_all { |t| t !~ /::/ }
43
+ loaders.implementation_registry.instance_variable_get(:@parent)
44
+ .instance_variable_get(:@implementations_per_type_name)
45
+ .keys.find_all { |t| t !~ /::/ }
29
46
  end
30
47
 
31
48
  # @return [Array[String]] - combined list of core data types and environment data types
@@ -36,7 +53,6 @@ module PuppetDebugger
36
53
  end
37
54
  core_datatypes + environment_data_types
38
55
  end
39
-
40
56
  end
41
57
  end
42
58
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Environment < InputResponderPlugin
5
- COMMAND_WORDS = %w(environment)
7
+ COMMAND_WORDS = %w[environment].freeze
6
8
  SUMMARY = 'Show the current environment name'
7
9
  COMMAND_GROUP = :context
8
10
 
9
- def run(args = [])
11
+ def run(_args = [])
10
12
  "Puppet Environment: #{debugger.puppet_env_name}"
11
13
  end
12
14
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Exit < InputResponderPlugin
5
- COMMAND_WORDS = %w(exit)
6
- SUMMARY = 'Quit Puppet Debugger.'
7
+ COMMAND_WORDS = %w[exit].freeze
8
+ SUMMARY = 'Quit Puppet Debugger, or use control-d'
7
9
  COMMAND_GROUP = :help
8
10
 
9
- def run(args = [])
11
+ def run(_args = [])
10
12
  exit 0
11
13
  end
12
14
  end
@@ -1,14 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class FacterdbFilter < InputResponderPlugin
5
- COMMAND_WORDS = %w(facterdb_filter ff)
7
+ COMMAND_WORDS = %w[facterdb_filter ff].freeze
6
8
  SUMMARY = 'Set the facterdb filter'
7
9
  COMMAND_GROUP = :node
8
10
 
9
11
  # displays the facterdb filter
10
12
  # @param [Array] - args is not used
11
- def run(args = [])
13
+ def run(_args = [])
12
14
  debugger.dynamic_facterdb_filter.ai
13
15
  end
14
16
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Facts < InputResponderPlugin
5
- COMMAND_WORDS = %w(facts)
7
+ COMMAND_WORDS = %w[facts].freeze
6
8
  SUMMARY = 'List all the facts associated with the node.'
7
9
  COMMAND_GROUP = :node
8
10
 
9
- def run(args = [])
11
+ def run(_args = [])
10
12
  variables = debugger.node.facts.values
11
13
  variables.ai(sort_keys: true, indent: -1)
12
14
  end
@@ -1,23 +1,25 @@
1
- require "puppet-debugger/input_responder_plugin"
2
- require "table_print"
1
+ # frozen_string_literal: true
2
+
3
+ require 'puppet-debugger/input_responder_plugin'
4
+ require 'table_print'
3
5
  require 'fileutils'
4
6
  require 'bundler'
5
7
 
6
8
  module PuppetDebugger
7
9
  module InputResponders
8
10
  class Functions < InputResponderPlugin
9
- COMMAND_WORDS = %w(functions)
10
- SUMMARY = "List all the functions available in the environment."
11
+ COMMAND_WORDS = %w[functions].freeze
12
+ SUMMARY = 'List all the functions available in the environment.'
11
13
  COMMAND_GROUP = :environment
12
- FUNC_NATIVE_NAME_REGEX = %r{\Afunction\s([\w\:]+)}
13
- FUNC_V4_NAME_REGEX = %r{Puppet\:\:Functions.create_function\s?\(?\:?\'?([\w\:]+)}
14
+ FUNC_NATIVE_NAME_REGEX = /\Afunction\s([\w\:]+)/.freeze
15
+ FUNC_V4_NAME_REGEX = /Puppet\:\:Functions.create_function\s?\(?\:?\'?([\w\:]+)/.freeze
14
16
 
15
17
  def run(args = [])
16
- filter = args.first || ""
17
- TablePrint::Printer.table_print(sorted_list(filter), [:full_name, :mod_name])
18
+ filter = args.first || ''
19
+ TablePrint::Printer.table_print(sorted_list(filter), %i[full_name mod_name])
18
20
  end
19
21
 
20
- def sorted_list(filter = "")
22
+ def sorted_list(filter = '')
21
23
  search = /#{Regexp.escape(filter)}/
22
24
  function_map.values.find_all do |v|
23
25
  "#{v[:mod_name]}_#{v[:full_name]}" =~ search
@@ -27,7 +29,7 @@ module PuppetDebugger
27
29
  # append a () to functions so we know they are functions
28
30
  def func_list
29
31
  # ideally we should get a list of function names via the puppet loader
30
- function_map.map { |name, metadata| "#{metadata[:full_name]}()" }
32
+ function_map.map { |_name, metadata| "#{metadata[:full_name]}()" }
31
33
  end
32
34
 
33
35
  # @return [Hash] - a map of all the functions
@@ -45,8 +47,8 @@ module PuppetDebugger
45
47
  def current_module_dir
46
48
  @current_module_dir ||= begin
47
49
  File.dirname(::Bundler.default_gemfile)
48
- rescue ::Bundler::GemfileNotFound
49
- Dir.pwd
50
+ rescue ::Bundler::GemfileNotFound
51
+ Dir.pwd
50
52
  end
51
53
  end
52
54
 
@@ -62,26 +64,26 @@ module PuppetDebugger
62
64
  namespace = nil
63
65
  name = nil
64
66
  if file =~ /\.pp/
65
- File.readlines(file, :encoding => "UTF-8").find do |line|
67
+ File.readlines(file, encoding: 'UTF-8').find do |line|
66
68
  # TODO: not getting namespace for functio
67
- if line.match(FUNC_NATIVE_NAME_REGEX)
68
- namespace, name = $1.split("::", 2)
69
- name = namespace if name.nil?
70
- namespace = "" if namespace == name
71
- end
69
+ next unless line.match(FUNC_NATIVE_NAME_REGEX)
70
+
71
+ namespace, name = Regexp.last_match(1).split('::', 2)
72
+ name = namespace if name.nil?
73
+ namespace = '' if namespace == name
72
74
  end
73
- elsif file.include?("lib/puppet/functions")
74
- File.readlines(file, :encoding => "UTF-8").find do |line|
75
- if line.match(FUNC_V4_NAME_REGEX)
76
- namespace, name = $1.split("::", 2)
77
- name = namespace if name.nil?
78
- namespace = "" if namespace == name
79
- end
75
+ elsif file.include?('lib/puppet/functions')
76
+ File.readlines(file, encoding: 'UTF-8').find do |line|
77
+ next unless line.match(FUNC_V4_NAME_REGEX)
78
+
79
+ namespace, name = Regexp.last_match(1).split('::', 2)
80
+ name = namespace if name.nil?
81
+ namespace = '' if namespace == name
80
82
  end
81
83
  end
82
84
  name ||= File.basename(file, File.extname(file))
83
85
  match = file.match('\/(?<mod>[\w\-\.]+)\/(lib|functions|manifests)')
84
- summary_match = File.read(file, :encoding => "UTF-8").match(/@summary\s(.*)/)
86
+ summary_match = File.read(file, encoding: 'UTF-8').match(/@summary\s(.*)/)
85
87
  summary = summary_match[1] if summary_match
86
88
  # fetch the puppet version if this is a function from puppet gem
87
89
  captures = file.match(/(puppet-[\d\.]+)/)
@@ -106,15 +108,15 @@ module PuppetDebugger
106
108
  # in the future we may want to utilize the puppet loaders to find these things
107
109
  def function_files
108
110
  search_dirs = lib_dirs.map do |lib_dir|
109
- [File.join(lib_dir, "puppet", "functions", "**", "*.rb"),
110
- File.join(lib_dir, "functions", "**", "*.rb"),
111
- File.join(File.dirname(lib_dir), "functions", "**", "*.pp"),
112
- File.join(lib_dir, "puppet", "parser", "functions", "*.rb")]
111
+ [File.join(lib_dir, 'puppet', 'functions', '**', '*.rb'),
112
+ File.join(lib_dir, 'functions', '**', '*.rb'),
113
+ File.join(File.dirname(lib_dir), 'functions', '**', '*.pp'),
114
+ File.join(lib_dir, 'puppet', 'parser', 'functions', '*.rb')]
113
115
  end
114
116
 
115
117
  # add puppet lib directories
116
- search_dirs << [File.join(puppet_lib_dir, "puppet", "functions", "**", "*.rb"),
117
- File.join(puppet_lib_dir, "puppet", "parser", "functions", "*.rb")]
118
+ search_dirs << [File.join(puppet_lib_dir, 'puppet', 'functions', '**', '*.rb'),
119
+ File.join(puppet_lib_dir, 'puppet', 'parser', 'functions', '*.rb')]
118
120
  Dir.glob(search_dirs.flatten)
119
121
  end
120
122
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-debugger/input_responder_plugin'
2
4
  module PuppetDebugger
3
5
  module InputResponders
4
6
  class Help < InputResponderPlugin
5
- COMMAND_WORDS = %w(help)
7
+ COMMAND_WORDS = %w[help].freeze
6
8
  SUMMARY = 'Show the help screen with version information.'
7
9
  COMMAND_GROUP = :help
8
10
 
9
- def run(args = [])
11
+ def run(_args = [])
10
12
  PuppetDebugger::Cli.print_repl_desc
11
13
  end
12
14
  end