def self.run(args = [])
super
return if @help_requested
@options[:start_time] = Time.now
set_up_logger
if ::Utils.puppet_info[:config]['modulepath']
::Utils.puppet_info[:config]['modulepath'].split(':').each do |dir|
next unless File.directory?(dir)
Find.find(dir) do |mod_path|
fact_path = File.expand_path('lib/facter', mod_path)
Facter.search(fact_path) if File.directory?(fact_path)
Find.prune unless mod_path == dir
end
end
end
cli_answers = {}
cli_answers = Hash[ args.map{ |x| x.split '=' } ]
interrupted_session_answers = saved_session
file_answers = {}
if @options.fetch(:answers_input_file)
file_answers = read_answers_file( @options.fetch(:answers_input_file) )
end
answers_hash = (file_answers.merge(interrupted_session_answers)).merge(cli_answers)
logger.info( "\n#{INTRO_TEXT.chomp}", [:GREEN] )
logger.info( "#{' '*15}#{@options[:log_file]}")
logger.info( '='*80 + "\n", [:GREEN] )
unless answers_hash['cli::simp::scenario']
item = Simp::Cli::Config::Item::CliSimpScenario.new
item.query
answers_hash['cli::simp::scenario'] = item.value
end
scenario_hiera_file = File.join(::Utils.puppet_info[:simp_environment_path],
'hieradata', 'scenarios', "#{answers_hash['cli::simp::scenario']}.yaml")
unless File.exist?(scenario_hiera_file)
alt_scenario_hiera_file = File.join('/', 'usr', 'share', 'simp',
'environments','simp', 'hieradata', 'scenarios',
"#{answers_hash['cli::simp::scenario']}.yaml")
scenario_hiera_file = alt_scenario_hiera_file if File.exist?(alt_scenario_hiera_file)
end
scenario_answers = read_answers_file( scenario_hiera_file )
answers_hash = scenario_answers.merge(answers_hash)
item_list = Simp::Cli::Config::ItemListFactory.new( @options ).process( answers_hash )
questionnaire = Simp::Cli::Config::Questionnaire.new( @options )
answers = questionnaire.process( item_list, {} )
print_summary(answers) if answers
logger.say( "\n<%= color(%q{Detailed log written to #{@options[:log_file]}}, BOLD) %>" )
remove_saved_session
end