class SimplyGenius::Atmos::CLI
The command line interface to atmos
Public Class Methods
description()
click to toggle source
# File lib/simplygenius/atmos/cli.rb, line 19 def self.description desc = <<-DESC Atmos version #{VERSION} Runs The atmos command line application e.g. atmos --help DESC desc.split("\n").collect(&:strip).join("\n") end
run(invocation_path = File.basename($PROGRAM_NAME), arguments = ARGV, context = {})
click to toggle source
Calls superclass method
# File lib/simplygenius/atmos/cli.rb, line 213 def run(invocation_path = File.basename($PROGRAM_NAME), arguments = ARGV, context = {}) begin super rescue SystemExit => e if ! e.success? logger.log_exception(e, "Failure exit", level: :debug) logger.error(e.message) raise end rescue Exception => e logger.log_exception(e, "Unhandled exception", level: :debug) logger.error(e.message) exit! end end
Public Instance Methods
default_color?()
click to toggle source
# File lib/simplygenius/atmos/cli.rb, line 62 def default_color? $stdout.tty? end
execute()
click to toggle source
# File lib/simplygenius/atmos/cli.rb, line 103 def execute logger.info "Atmos Version #{VERSION}" end
fetch_latest_version()
click to toggle source
# File lib/simplygenius/atmos/cli.rb, line 141 def fetch_latest_version begin latest_ver = JSON.parse(URI.open("https://rubygems.org/api/v1/versions/simplygenius-atmos/latest.json").read)['version'] rescue => e latest_ver = "[Version Fetch Failed]" logger.log_exception(e, "Couldn't check latest atmos gem version", level: :debug) end latest_ver end
parse(arguments)
click to toggle source
hook into clamp lifecycle to force logging setup even when we are calling a subcommand
Calls superclass method
# File lib/simplygenius/atmos/cli.rb, line 178 def parse(arguments) super if Atmos.config.nil? Atmos.config = Config.new(atmos_env, atmos_group) log = Atmos.config.is_atmos_repo? && log? ? "atmos.log" : nil level = :info level = :debug if debug? level = :error if quiet? Logging.setup_logging(level, color?, log) override_list.each do |o| k, v = o.split("=") v = YAML.load(v) logger.debug("Overriding config '#{k}' = #{v.inspect}") Atmos.config.[]=(k, v, additive: false) end UI.color_enabled = color? Atmos.config.add_user_load_path(*load_path_list) Atmos.config.plugin_manager.load_plugins # So we can show just the version with the -v flag if version? logger.info "Atmos Version #{VERSION}" exit(0) end version_check(VERSION) end end
version_check(atmos_version)
click to toggle source
# File lib/simplygenius/atmos/cli.rb, line 151 def version_check(atmos_version) required_ver = Atmos.config["atmos.version_requirement"] if required_ver.present? case required_ver when "latest" latest_ver = fetch_latest_version if latest_ver != atmos_version raise "The atmos version (#{atmos_version}) does not match the given requirement (latest: #{latest_ver})" end when /[~<>=]*\s*[\d\.]*/ if ! Gem::Dependency.new('', required_ver).match?('', atmos_version) raise "The atmos version (#{atmos_version}) does not match the given requirement (#{required_ver})" end else raise "Invalid atmos.version_requirement, should be 'latest' or in a gem dependency form" end end end