module EY::UtilityMethods
Protected Instance Methods
api()
click to toggle source
# File lib/engineyard/thor.rb, line 7 def api @api ||= EY::CLI::API.new(config.endpoint, ui, options[:api_token]) end
config()
click to toggle source
# File lib/engineyard/thor.rb, line 11 def config @config ||= EY::Config.new end
fetch_app_environment(app_name, environment_name, account_name)
click to toggle source
# File lib/engineyard/thor.rb, line 81 def fetch_app_environment(app_name, environment_name, account_name) ui.info "Loading application data from Engine Yard Cloud..." environment_name ||= use_default_environment remotes = repo.remotes if in_repo? constraints = { app_name: app_name, environment_name: environment_name, account_name: account_name, remotes: remotes, } if constraints.all? { |k,v| v.nil? || v.empty? || v.to_s.empty? } raise EY::NoMatchesError.new <<-ERROR Unable to find application without a git remote URI or app name. Please specify --app=app_name or add this application at #{config.endpoint}" ERROR end resolver = api.resolve_app_environments(constraints) resolver.one_match { |match| return match } resolver.no_matches do |errors, suggestions| raise_no_matches(errors, suggestions) end resolver.many_matches do |app_envs| raise EY::MultipleMatchesError.new(too_many_app_environments_error(app_envs)) end end
fetch_environment(environment_name, account_name)
click to toggle source
# File lib/engineyard/thor.rb, line 49 def fetch_environment(environment_name, account_name) ui.info "Loading application data from Engine Yard Cloud..." environment_name ||= use_default_environment remotes = repo.remotes if in_repo? constraints = { environment_name: environment_name, account_name: account_name, remotes: remotes, } resolver = api.resolve_environments(constraints) resolver.one_match { |match| return match } resolver.no_matches do |errors, suggestions| raise_no_matches(errors, suggestions) end resolver.many_matches do |matches| if environment_name message = "Multiple environments possible, please be more specific:\n\n" matches.each do |env| message << "\t#{env.name.ljust(25)} # ey <command> --environment='#{env.name}' --account='#{env.account.name}'\n" end raise EY::MultipleMatchesError.new(message) else raise EY::AmbiguousEnvironmentGitUriError.new(matches) end end end
in_repo?()
click to toggle source
# File lib/engineyard/thor.rb, line 20 def in_repo? EY::Repo.exist? end
raise_no_matches(errors, suggestions)
click to toggle source
# File lib/engineyard/thor.rb, line 112 def raise_no_matches(errors, suggestions) message = "We found the following suggestions:\n" if suggestions.any? suggestions.each do |suggest| message << " # ey <command> --account='#{suggest['account_name']}' --app='#{suggest['app_name']}' --environment='#{suggest['env_name']}'\n" end raise EY::NoMatchesError.new([errors,message].compact.join("\n").strip) end
repo()
click to toggle source
# File lib/engineyard/thor.rb, line 24 def repo @repo ||= EY::Repo.new end
serverside_runner(app_env, verbose, serverside_version = serverside_version(), ignore_bad_bridge = false)
click to toggle source
# File lib/engineyard/thor.rb, line 32 def serverside_runner(app_env, verbose, serverside_version = serverside_version(), ignore_bad_bridge = false) ServersideRunner.new({ bridge: app_env.environment.bridge!(ignore_bad_bridge).hostname, app: app_env.app, environment: app_env.environment, verbose: verbose, serverside_version: serverside_version }) end
serverside_version()
click to toggle source
# File lib/engineyard/thor.rb, line 28 def serverside_version respond_to?(:options) && options[:serverside_version] || EY::ENGINEYARD_SERVERSIDE_VERSION end
too_many_app_environments_error(app_envs)
click to toggle source
# File lib/engineyard/thor.rb, line 122 def too_many_app_environments_error(app_envs) message = "Multiple application environments possible, please be more specific:\n\n" app_envs.group_by do |app_env| [app_env.account_name, app_env.app_name] end.sort_by { |k,v| k.join }.each do |(account_name, app_name), grouped_app_envs| message << "\n" message << account_name << "/" << app_name << "\n" grouped_app_envs.map { |ae| ae.environment_name }.uniq.sort.each do |env_name| message << "\t#{env_name.ljust(25)}" message << " # ey <command> --account='#{account_name}' --app='#{app_name}' --environment='#{env_name}'\n" end end message end
ui()
click to toggle source
engineyard gem uses ui everywhere, thore supplies shell
# File lib/engineyard/thor.rb, line 16 def ui shell end
use_default_environment()
click to toggle source
# File lib/engineyard/thor.rb, line 42 def use_default_environment if env = config.default_environment ui.info "Using default environment #{config.default_environment.inspect} from ey.yml." env end end