# File lib/foreman_maintain/config.rb, line 9 def initialize(options) @pre_setup_log_messages = [] @config_file = options.fetch(:config_file, config_file_path) @options = load_config @definitions_dirs = @options.fetch(:definitions_dirs, [File.join(source_path, 'definitions')]) load_log_configs load_backup_dir_paths load_cron_option @foreman_proxy_cert_path = @options.fetch(:foreman_proxy_cert_path, '/etc/foreman') @completion_cache_file = File.expand_path( @options.fetch(:completion_cache_file, '~/.cache/foreman_maintain_completion.yml') ) @disable_commands = @options.fetch(:disable_commands, []) end
# File lib/foreman_maintain/config.rb, line 82 def boolean?(value) [true, false].include? value end
# File lib/foreman_maintain/config.rb, line 63 def config_file_path File.exist?(CONFIG_FILE) ? CONFIG_FILE : File.join(source_path, 'config/foreman_maintain.yml') end
# File lib/foreman_maintain/config.rb, line 71 def find_dir_path(dir_path_str) dir_path = File.expand_path(dir_path_str) begin FileUtils.mkdir_p(dir_path, :mode => 0o750) unless File.exist?(dir_path) rescue StandardError => e warn "No permissions to create dir #{dir_path_str}" warn e.message.inspect end dir_path end
# File lib/foreman_maintain/config.rb, line 36 def load_backup_dir_paths @storage_file = @options.fetch(:storage_file, 'data.yml') @backup_dir = find_dir_path( @options.fetch(:backup_dir, '/var/lib/foreman-maintain') ) @db_backup_dir = find_dir_path( @options.fetch(:db_backup_dir, '/var/lib/foreman-maintain/db-backups') ) end
# File lib/foreman_maintain/config.rb, line 51 def load_config if File.exist?(config_file) YAML.load(File.open(config_file)) || {} else @pre_setup_log_messages << "Config file #{config_file} not found, using default configuration" {} end rescue StandardError => e raise "Couldn't load configuration file. Error: #{e.message}" end
# File lib/foreman_maintain/config.rb, line 46 def load_cron_option opt_val = @options.fetch(:manage_crond, false) @manage_crond = boolean?(opt_val) ? opt_val : false end
# File lib/foreman_maintain/config.rb, line 27 def load_log_configs @log_level = @options.fetch(:log_level, ::Logger::DEBUG) @log_dir = find_dir_path(@options.fetch(:log_dir, 'log')) @log_file_size = @options.fetch(:log_file_size, 10_000) # Note - If timestamp added to filename then number of log files i.e second # argument to Logger.new will not work as expected @log_filename = File.expand_path("#{@log_dir}/foreman-maintain.log") end
# File lib/foreman_maintain/config.rb, line 67 def source_path File.expand_path('../../..', __FILE__) end