24
25
26
27
28
29
30
31
32
33
34
35
36
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
|
# File 'lib/open_gem/common_options.rb', line 24
def get_spec(name)
version = options[:version] || Gem::Version.new(">= 0")
exact = options[:exact]
specs = Gem::Specification.find_all do |s|
if name.is_a? String
name_match = s.name == name
else
name_match = s.name[name]
end
name_match && version.satisfied_by?(s.version)
end
if block_given?
specs = specs.select{|spec| yield spec}
end
specs = specs.sort
if specs.length == 0
if(!exact && !name.is_a?(Regexp))
pattern = /#{Regexp.escape name}/
get_spec(pattern)
else
say "#{name.inspect} is not available"
return nil
end
elsif specs.length == 1 || options[:latest]
return specs.last
else
choices = specs.map{|s|"#{s.name} #{s.version}"}
c,i = choose_from_list "Open which gem?", choices
return specs[i] if i
end
end
|