lib/plugins/puppet-debugger/input_responders/functions.rb in puppet-debugger-0.19.0 vs lib/plugins/puppet-debugger/input_responders/functions.rb in puppet-debugger-1.0.0

- old
+ new

@@ -1,35 +1,37 @@ -require "puppet-debugger/input_responder_plugin" -require "table_print" +# frozen_string_literal: true + +require 'puppet-debugger/input_responder_plugin' +require 'table_print' require 'fileutils' require 'bundler' module PuppetDebugger module InputResponders class Functions < InputResponderPlugin - COMMAND_WORDS = %w(functions) - SUMMARY = "List all the functions available in the environment." + COMMAND_WORDS = %w[functions].freeze + SUMMARY = 'List all the functions available in the environment.' COMMAND_GROUP = :environment - FUNC_NATIVE_NAME_REGEX = %r{\Afunction\s([\w\:]+)} - FUNC_V4_NAME_REGEX = %r{Puppet\:\:Functions.create_function\s?\(?\:?\'?([\w\:]+)} + FUNC_NATIVE_NAME_REGEX = /\Afunction\s([\w\:]+)/.freeze + FUNC_V4_NAME_REGEX = /Puppet\:\:Functions.create_function\s?\(?\:?\'?([\w\:]+)/.freeze def run(args = []) - filter = args.first || "" - TablePrint::Printer.table_print(sorted_list(filter), [:full_name, :mod_name]) + filter = args.first || '' + TablePrint::Printer.table_print(sorted_list(filter), %i[full_name mod_name]) end - def sorted_list(filter = "") + def sorted_list(filter = '') search = /#{Regexp.escape(filter)}/ function_map.values.find_all do |v| "#{v[:mod_name]}_#{v[:full_name]}" =~ search end.sort { |a, b| a[:full_name] <=> b[:full_name] } end # append a () to functions so we know they are functions def func_list # ideally we should get a list of function names via the puppet loader - function_map.map { |name, metadata| "#{metadata[:full_name]}()" } + function_map.map { |_name, metadata| "#{metadata[:full_name]}()" } end # @return [Hash] - a map of all the functions def function_map functions = {} @@ -43,12 +45,12 @@ # @return [String] - the current module directory or directory that contains a gemfile def current_module_dir @current_module_dir ||= begin File.dirname(::Bundler.default_gemfile) - rescue ::Bundler::GemfileNotFound - Dir.pwd + rescue ::Bundler::GemfileNotFound + Dir.pwd end end def lib_dirs(module_dirs = modules_paths) dirs = module_dirs.map do |mod_dir| @@ -60,30 +62,30 @@ # @return [Array] - returns a array of the parentname and function name def function_obj(file) namespace = nil name = nil if file =~ /\.pp/ - File.readlines(file, :encoding => "UTF-8").find do |line| + File.readlines(file, encoding: 'UTF-8').find do |line| # TODO: not getting namespace for functio - if line.match(FUNC_NATIVE_NAME_REGEX) - namespace, name = $1.split("::", 2) - name = namespace if name.nil? - namespace = "" if namespace == name - end + next unless line.match(FUNC_NATIVE_NAME_REGEX) + + namespace, name = Regexp.last_match(1).split('::', 2) + name = namespace if name.nil? + namespace = '' if namespace == name end - elsif file.include?("lib/puppet/functions") - File.readlines(file, :encoding => "UTF-8").find do |line| - if line.match(FUNC_V4_NAME_REGEX) - namespace, name = $1.split("::", 2) - name = namespace if name.nil? - namespace = "" if namespace == name - end + elsif file.include?('lib/puppet/functions') + File.readlines(file, encoding: 'UTF-8').find do |line| + next unless line.match(FUNC_V4_NAME_REGEX) + + namespace, name = Regexp.last_match(1).split('::', 2) + name = namespace if name.nil? + namespace = '' if namespace == name end end name ||= File.basename(file, File.extname(file)) match = file.match('\/(?<mod>[\w\-\.]+)\/(lib|functions|manifests)') - summary_match = File.read(file, :encoding => "UTF-8").match(/@summary\s(.*)/) + summary_match = File.read(file, encoding: 'UTF-8').match(/@summary\s(.*)/) summary = summary_match[1] if summary_match # fetch the puppet version if this is a function from puppet gem captures = file.match(/(puppet-[\d\.]+)/) file_namespace = captures[1] if captures mod_name = file_namespace || match[:mod] @@ -104,18 +106,18 @@ # returns a array of function files which is only required # when displaying the function map, puppet will load each function on demand # in the future we may want to utilize the puppet loaders to find these things def function_files search_dirs = lib_dirs.map do |lib_dir| - [File.join(lib_dir, "puppet", "functions", "**", "*.rb"), - File.join(lib_dir, "functions", "**", "*.rb"), - File.join(File.dirname(lib_dir), "functions", "**", "*.pp"), - File.join(lib_dir, "puppet", "parser", "functions", "*.rb")] + [File.join(lib_dir, 'puppet', 'functions', '**', '*.rb'), + File.join(lib_dir, 'functions', '**', '*.rb'), + File.join(File.dirname(lib_dir), 'functions', '**', '*.pp'), + File.join(lib_dir, 'puppet', 'parser', 'functions', '*.rb')] end # add puppet lib directories - search_dirs << [File.join(puppet_lib_dir, "puppet", "functions", "**", "*.rb"), - File.join(puppet_lib_dir, "puppet", "parser", "functions", "*.rb")] + search_dirs << [File.join(puppet_lib_dir, 'puppet', 'functions', '**', '*.rb'), + File.join(puppet_lib_dir, 'puppet', 'parser', 'functions', '*.rb')] Dir.glob(search_dirs.flatten) end end end end