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)])