class Navo::CLI
Command line application interface.
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/navo/cli.rb, line 8 def initialize(*args) super Navo::Logger.output = STDOUT STDOUT.sync = true Navo::Logger.level = config['log-level'] end
Public Instance Methods
login(pattern)
click to toggle source
# File lib/navo/cli.rb, line 47 def login(pattern) apply_flags_to_config! suites = suites_for(pattern) if suites.size == 0 logger.console "Pattern '#{pattern}' matched no test suites", severity: :error exit 1 elsif suites.size > 1 logger.console "Pattern '#{pattern}' matched more than one test suite", severity: :error exit 1 else suites.first.login end end
Private Instance Methods
apply_flags_to_config!()
click to toggle source
# File lib/navo/cli.rb, line 81 def apply_flags_to_config! config['log-level'] = options['log-level'] if options['log-level'] Navo::Logger.level = config['log-level'] config['concurrency'] = options['concurrency'] if options['concurrency'] config['destroy'] = options.fetch('destroy', 'passing') # Initialize here so config is correctly set Berksfile.path = File.expand_path(config['chef']['berksfile'], config.repo_root) Berksfile.config = config @global_state = StateFile.new(file: File.join(config.repo_root, %w[.navo global-state.yaml]), logger: logger).tap(&:load) end
config()
click to toggle source
# File lib/navo/cli.rb, line 64 def config @config ||= Configuration.load_applicable end
execute(action, pattern = nil)
click to toggle source
# File lib/navo/cli.rb, line 94 def execute(action, pattern = nil) suites = suites_for(pattern) results = Parallel.map(suites, in_threads: config['concurrency']) do |suite| succeeded = suite.send(action) [succeeded, suite] end failures = results.reject { |succeeded, result| succeeded } failures.each do |_, suite| logger.console("Failed to #{action} #{suite.name}", severity: :error) logger.console("See #{suite.log_file} for full log output", severity: :error) end exit failures.any? ? 1 : 0 rescue Interrupt # Handle Ctrl-C logger.console('INTERRUPTED', severity: :warn) rescue => ex logger.console("#{ex.class}: #{ex.message}", severity: :fatal) logger.console(ex.backtrace.join("\n"), severity: :fatal) end
logger()
click to toggle source
# File lib/navo/cli.rb, line 68 def logger @logger ||= Navo::Logger.new end
suites_for(pattern)
click to toggle source
# File lib/navo/cli.rb, line 72 def suites_for(pattern) suite_names = config['suites'].keys suite_names.select! { |name| name =~ /#{pattern}/ } if pattern suite_names.map do |suite_name| Suite.new(name: suite_name, config: config, global_state: @global_state) end end