bin/hammer in hammer_cli-0.0.18 vs bin/hammer in hammer_cli-0.1.0

- old
+ new

@@ -3,14 +3,25 @@ require 'rubygems' require 'clamp' require 'highline' HighLine.color_scheme = HighLine::SampleColorScheme.new +# load i18n to get translations +require 'hammer_cli/i18n' + +require 'hammer_cli/options/normalizers' # 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" + option ["-v", "--verbose"], :flag, _("be verbose") + option ["-d", "--debug"], :flag, _("show debugging output") + option ["-c", "--config"], "CFG_FILE", _("path to custom config file") + option ["-u", "--username"], "USERNAME", _("username to access the remote system") + option ["-p", "--password"], "PASSWORD", _("password to access the remote system") + option ["--interactive"], "INTERACTIVE", _("Explicitly turn interactive mode on/off") do |value| + bool_normalizer = HammerCLI::Options::Normalizers::Bool.new + bool_normalizer.format(value) + end end preparser = PreParser.new File.basename($0), {} begin preparser.parse ARGV @@ -18,31 +29,53 @@ end # load user's settings require 'hammer_cli/settings' -CFG_PATH = ['./config/cli_config.yml', '~/.foreman/cli_config.yml', '/etc/foreman/cli_config.yml'] +CFG_PATH_LEGACY = ['~/.foreman/', '/etc/foreman/', "#{::RbConfig::CONFIG['sysconfdir']}/foreman/"].uniq +HammerCLI::Settings.load_from_paths CFG_PATH_LEGACY +if HammerCLI::Settings.path_history.empty? + CFG_PATH = ['~/.hammer/', '/etc/hammer/', "#{::RbConfig::CONFIG['sysconfdir']}/hammer/"].uniq + HammerCLI::Settings.load_from_paths CFG_PATH +else + warn _("Warning: Legacy config paths detected, move the following files") + HammerCLI::Settings.path_history.each { |p| warn " #{p} -> #{p.gsub('hammer.modules.d', 'cli.modules.d').gsub('foreman/', 'hammer/')}"} +end +CFG_PATH_LOCAL = ['./config/'] + if preparser.config - CFG_PATH.unshift preparser.config + CFG_PATH_LOCAL.unshift preparser.config end -HammerCLI::Settings.load_from_file CFG_PATH +HammerCLI::Settings.load_from_paths CFG_PATH_LOCAL +# store username and password in settings +HammerCLI::Settings.load({ + :_params => { + :username => preparser.username, + :password => preparser.password, + :interactive => preparser.interactive, + :verbose => preparser.verbose? || preparser.debug? + }}) + # setup logging require 'hammer_cli/logger' logger = Logging.logger['Init'] -if preparser.verbose? +if preparser.verbose? || preparser.debug? root_logger = Logging.logger.root root_logger.appenders = root_logger.appenders << ::Logging.appenders.stderr(:layout => HammerCLI::Logger::COLOR_LAYOUT) + root_logger.level = 'debug' if preparser.debug? end require 'hammer_cli/version' hammer_version = HammerCLI.version.to_s logger.info "Initialization of Hammer CLI (#{hammer_version}) has started..." +logger.debug "Running at ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}" + # 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 @@ -54,8 +87,14 @@ HammerCLI::Modules.load_all rescue => e handler = HammerCLI::ExceptionHandler.new(:context => {}, :adapter => :base) handler.handle_exception(e) exit HammerCLI::EX_SOFTWARE +end + +# log information about locale +logger.debug "Using locale '#{HammerCLI::I18n.locale}'" +HammerCLI::I18n.domains.each do |domain| + logger.debug "'#{domain.type}' files for locale domain '#{domain.domain_name}' loaded from '#{File.expand_path(domain.locale_dir)}'" end exit HammerCLI::MainCommand.run || HammerCLI::EX_OK