class ForemanMaintain::Cli::Base
Attributes
runner[R]
Public Class Methods
completion_map()
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 92 def self.completion_map completion = {} # collect options recognised_options.each do |opt| opt.switches.each do |switch| completion[switch] = completion_types.fetch(switch, {}) end end # collect subcommands recursively recognised_subcommands.each do |cmd| completion[cmd.names.first] = cmd.subcommand_class.completion_map end # collect params completion[:params] = completion_types[:params] unless completion_types[:params].empty? completion end
completion_types()
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 109 def self.completion_types @completion_types ||= { :params => [] } end
dashize(string)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 27 def self.dashize(string) string.to_s.tr('_', '-') end
delete_duplicate_assumeyes_if_any()
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 193 def self.delete_duplicate_assumeyes_if_any declared_options.delete_if { |opt| opt.handles?('--assumeyes') } end
interactive_option(opts = %w[assumeyes whitelist force plaintext])
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/foreman_maintain/cli/base.rb, line 156 def self.interactive_option(opts = %w[assumeyes whitelist force plaintext]) delete_duplicate_assumeyes_if_any if opts.include?('assumeyes') option ['-y', '--assumeyes'], :flag, 'Automatically answer yes for all questions' do |assume| ForemanMaintain.reporter.assumeyes = assume end end if opts.include?('whitelist') option(['-w', '--whitelist'], 'whitelist', 'Comma-separated list of labels of steps to be skipped') do |whitelist| raise ArgumentError, 'value not specified' if whitelist.nil? || whitelist.empty? whitelist.split(',').map(&:strip) end end if opts.include?('force') option ['-f', '--force'], :flag, 'Force steps that would be skipped as they were already run' end if opts.include?('plaintext') option(['--plaintext'], :flag, 'Print the output in plaintext and disable the spinner') do |plaintext| ForemanMaintain.reporter.plaintext = plaintext end end end
label_option()
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 136 def self.label_option option '--label', 'label', 'Run only a specific check with a label. ' \ '(Use "list" command to see available labels)' do |label| raise ArgumentError, 'value not specified' if label.nil? || label.empty? underscorize(label).to_sym end end
option(switches, type, description, opts = {}, &block)
click to toggle source
Calls superclass method
# File lib/foreman_maintain/cli/base.rb, line 113 def self.option(switches, type, description, opts = {}, &block) multivalued = opts.delete(:multivalued) completion_type = opts.delete(:completion) completion_type = { :type => :flag } if completion_type.nil? && type == :flag completion_type ||= { :type => :value } [switches].flatten(1).each { |s| completion_types[s] = completion_type } description += ' (comma-separated list)' if multivalued super(switches, type, description, opts) do |value| value = CSVParser.new.parse(value) if multivalued value = instance_exec(value, &block) if block value end end
parameter(name, description, opts = {}, &block)
click to toggle source
Calls superclass method
# File lib/foreman_maintain/cli/base.rb, line 127 def self.parameter(name, description, opts = {}, &block) unless [:subcommand_name, :subcommand_arguments].include?(opts[:attribute_name]) completion_type = opts.delete(:completion) completion_type ||= { :type => :value } completion_types[:params] << completion_type end super(name, description, opts, &block) end
service_options()
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/foreman_maintain/cli/base.rb, line 188 def self.service_options option '--exclude', 'EXCLUDE', 'A comma-separated list of services to skip' option '--only', 'ONLY', 'A comma-separated list of services to include' end
subcommand(name, description, subcommand_class = self, &block)
click to toggle source
Calls superclass method
# File lib/foreman_maintain/cli/base.rb, line 13 def subcommand(name, description, subcommand_class = self, &block) add_command = true if subcommand_class.superclass == ForemanMaintain::Cli::Base sc = subcommand_class.to_s sc.slice!('ForemanMaintain::Cli::') if ForemanMaintain.config.disable_commands.include? sc logger.info("Disable command #{sc}") add_command = false end end super if add_command end
Public Instance Methods
available_checks()
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 72 def available_checks filter = {} filter[:tags] = tags if respond_to?(:tags) ForemanMaintain.available_checks(filter) end
available_procedures()
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 78 def available_procedures filter = {} filter[:tags] = tags if respond_to?(:tags) ForemanMaintain.available_procedures(filter) end
dashize(string)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 31 def dashize(string) self.class.dashize(string) end
label_string(string)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 39 def label_string(string) HighLine.color("[#{dashize(string)}]", :yellow) end
option_wrapper(option)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 197 def option_wrapper(option) respond_to?(option.to_sym) ? send(option) : false end
print_check_info(check)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 47 def print_check_info(check) desc = "#{label_string(check.label)} #{check.description}".ljust(80) tags = check.tags.map { |t| tag_string(t) }.join(' ').to_s puts "#{desc} #{tags}".strip end
reporter()
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 53 def reporter @reporter ||= ForemanMaintain.reporter end
run_scenario(scenarios, rescue_scenario = nil)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 57 def run_scenario(scenarios, rescue_scenario = nil) @runner ||= ForemanMaintain::Runner.new(reporter, scenarios, :assumeyes => option_wrapper('assumeyes?'), :whitelist => option_wrapper('whitelist') || [], :force => option_wrapper('force?'), :rescue_scenario => rescue_scenario) runner.run end
run_scenarios_and_exit(scenarios, rescue_scenario: nil)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 67 def run_scenarios_and_exit(scenarios, rescue_scenario: nil) run_scenario(scenarios, rescue_scenario) exit runner.exit_code end
tag_string(string)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 43 def tag_string(string) HighLine.color("[#{dashize(string)}]", :cyan) end
underscorize(string)
click to toggle source
# File lib/foreman_maintain/cli/base.rb, line 35 def underscorize(string) string.to_s.tr('-', '_') end