vmc-ng/lib/vmc/cli/service.rb in vmc-0.4.0.beta.24 vs vmc-ng/lib/vmc/cli/service.rb in vmc-0.4.0.beta.25

- old
+ new

@@ -7,10 +7,17 @@ choices.find { |c| c.name == name } || fail("Unknown #{what} '#{name}'") } end + def self.find_by_name_insensitive(what) + proc { |name, choices| + choices.find { |c| c.name.upcase == name.upcase } || + fail("Unknown #{what} '#{name}'") + } + end + def self.by_name(what, obj = what) proc { |name, *_| client.send(:"#{obj}_by_name", name) || fail("Unknown #{what} '#{name}'") } @@ -75,11 +82,11 @@ :desc => "Name for your instance") { |service| random = sprintf("%x", rand(1000000)) ask "Name?", :default => "#{service.label}-#{random}" } input(:plan, :desc => "Service plan", - :from_given => find_by_name("plan")) { |plans| + :from_given => find_by_name_insensitive("plan")) { |plans| if d100 = plans.find { |p| p.name == "D100" } d100 else ask "Which plan?", :choices => plans.sort_by(&:name), :display => proc { |p| "#{p.name}: #{p.description}" }, @@ -100,16 +107,16 @@ if input[:version] services.reject! { |s| s.version != input[:version] } end if plan = input.given(:plan) - services.reject! { |s| + services.reject! do |s| if plan.is_a?(String) s.service_plans.none? { |p| p.name == plan.upcase } else s.service_plans.include? plan end - } + end end until services.size < 2 # cast to Array since it might be given as a Service with #invoke services = Array(input[:service, services.sort_by(&:label)])