#! /usr/bin/env ruby require 'rubygems' require 'clamp' # create fake command instance to use some global args before we start class PreParser < Clamp::Command option ["-v", "--verbose"], :flag, "be verbose" option ["-c", "--config"], "CFG_FILE", "path to custom config file" end preparser = PreParser.new File.basename($0), {} begin preparser.parse ARGV rescue end # load user's settings require 'hammer_cli/settings' CFG_PATH = ['./config/cli_config.yml', '~/.foreman/cli_config.yml', '/etc/foreman/cli_config.yml'] if preparser.config CFG_PATH.unshift preparser.config end HammerCLI::Settings.load_from_file CFG_PATH # setup logging require 'hammer_cli/logger' logger = Logging.logger['Init'] if preparser.verbose? root_logger = Logging.logger.root root_logger.appenders = root_logger.appenders << ::Logging.appenders.stderr(:layout => HammerCLI::Logger::COLOR_LAYOUT) end # log which config was loaded (now when we have logging) HammerCLI::Settings.path_history.each do |path| logger.info "Configuration from the file #{path} has been loaded" end # load hammer core require 'hammer_cli' # load modules set in config modules = HammerCLI::Settings[:modules] || [] modules.each do |m| require m logger.info "Extension module #{m} loaded" end exit HammerCLI::MainCommand.run || 0