Project

General

Profile

Download (2.04 KB) Statistics
| Branch: | Tag: | Revision:
require 'clamp'
require 'highline'
require 'foreman_maintain/cli/base'
require 'foreman_maintain/cli/transform_clamp_options'
require 'foreman_maintain/cli/health_command'
require 'foreman_maintain/cli/upgrade_command'
require 'foreman_maintain/cli/backup_command'
require 'foreman_maintain/cli/advanced_command'
require 'foreman_maintain/cli/service_command'
require 'foreman_maintain/cli/restore_command'
require 'foreman_maintain/cli/maintenance_mode_command'

module ForemanMaintain
module Cli
class MainCommand < Base
include Concerns::Logger

subcommand 'health', 'Health related commands', HealthCommand
subcommand 'upgrade', 'Upgrade related commands', UpgradeCommand
subcommand 'service', 'Control applicable services', ServiceCommand
subcommand 'backup', 'Backup server', BackupCommand
subcommand 'restore', 'Restore a backup', RestoreCommand
subcommand 'advanced', 'Advanced tools for server maintenance', AdvancedCommand
subcommand 'maintenance-mode', 'Control maintenance-mode for application',
MaintenanceModeCommand

def run(*arguments)
logger.info("Running foreman-maintain command with arguments #{arguments.inspect}")
begin
super
@exit_code = 0
rescue Error::UsageError => e
process_usage_error(e)
rescue StandardError => e
process_standard_error(e)
end

return @exit_code
ensure
log_exit_code_info(@exit_code)
end

private

def log_exit_code_info(exit_code)
logger.info("foreman-maintain command finished with #{exit_code}")
end

def process_standard_error(error)
if error.is_a?(Clamp::HelpWanted) ||
error.is_a?(ArgumentError) ||
error.is_a?(Clamp::UsageError)
raise error
end

puts error.message
logger.error(error)

@exit_code = 1
end

def process_usage_error(error)
log_exit_code_info(1)
puts error.message
exit!
end
end
end
end
(2-2/21)