Class: EY::Resolver
Instance Attribute Summary collapse
-
#api ⇒ Object
readonly
Returns the value of attribute api.
Instance Method Summary collapse
- #app_and_environment(options) ⇒ Object
- #environment(options) ⇒ Object
-
#initialize(api) ⇒ Resolver
constructor
A new instance of Resolver.
Constructor Details
#initialize(api) ⇒ Resolver
Returns a new instance of Resolver.
5 6 7 |
# File 'lib/engineyard/resolver.rb', line 5 def initialize(api) @api = api end |
Instance Attribute Details
#api ⇒ Object (readonly)
Returns the value of attribute api.
3 4 5 |
# File 'lib/engineyard/resolver.rb', line 3 def api @api end |
Instance Method Details
#app_and_environment(options) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/engineyard/resolver.rb', line 37 def app_and_environment() candidates, account_candidates, app_candidates, environment_candidates = filter_candidates() if candidates.empty? if account_candidates.empty? && [:account_name] raise NoMatchesError.new("There were no accounts that matched #{[:account_name]}") elsif app_candidates.empty? if [:app_name] raise InvalidAppError.new([:app_name]) else raise NoAppError.new([:repo]) end elsif environment_candidates.empty? raise NoEnvironmentError.new([:environment_name]) else = "The matched apps & environments do not correspond with each other.\n" << "Applications:\n" app_candidates.map{|ad| [ad[:account_name], ad[:app_name]]}.uniq.each do |account_name, app_name| app = api.apps.named(app_name, account_name) << "\t#{app.name}\n" app.environments.each do |env| << "\t\t#{env.name} # ey <command> -e #{env.name} -a #{app.name}\n" end end end raise NoMatchesError.new() elsif candidates.size > 1 = "Multiple app deployments possible, please be more specific:\n\n" candidates.map{|c| [c[:account_name], c[:app_name]]}.uniq.each do |account_name, app_name| << "#{app_name}\n" candidates.select {|c| c[:app_name] == app_name && c[:account_name] == account_name}.map{|c| c[:environment_name]}.uniq.each do |env_name| << "\t#{env_name.ljust(25)} # ey <command> --environment='#{env_name}' --app='#{app_name}' --account='#{account_name}'\n" end end raise MultipleMatchesError.new() end result = candidates.first [api.apps.named(result[:app_name], result[:account_name]), api.environments.named(result[:environment_name], result[:account_name])] end |
#environment(options) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/engineyard/resolver.rb', line 9 def environment() raise ArgumentError if [:app_name] candidates, account_candidates, app_candidates, environment_candidates = filter_candidates() environments = candidates.map{ |c| [c[:account_name], c[:environment_name]] }.uniq.map do |account_name, environment_name| api.environments.named(environment_name, account_name) end if environments.empty? if [:environment_name] raise EY::NoEnvironmentError.new([:environment_name]) else raise EY::NoAppError.new([:repo]) end elsif environments.size > 1 if [:environment_name] = "Multiple environments possible, please be more specific:\n\n" candidates.map{|e| [e[:account_name], e[:environment_name]]}.uniq.each do |account_name, environment_name| << "\t#{environment_name.ljust(25)} # ey <command> --environment='#{environment_name}' --account='#{account_name}'\n" end raise MultipleMatchesError.new() else raise EY::AmbiguousEnvironmentGitUriError.new(environments) end end environments.first end |