Return Formula objects from outdated_brews

Previously, `outdated_brews` returned a list of lists---each containing three
components of a Formula object:

  - f.rack
  - f.name
  - f.version

Frequently more information is required which necessitates back-casting from
`name` to a Formula object---simpy returning formula objects removes this step.
This commit is contained in:
Charlie Sharpsteen 2011-09-11 13:06:05 -07:00
parent 94dba21f7d
commit 2492c6564d
2 changed files with 12 additions and 13 deletions

View File

@ -2,12 +2,12 @@ require 'formula'
module Homebrew extend self module Homebrew extend self
def outdated def outdated
outdated_brews.each do |keg, name, version| outdated_brews.each do |f|
if $stdout.tty? and not ARGV.flag? '--quiet' if $stdout.tty? and not ARGV.flag? '--quiet'
versions = keg.cd{ Dir['*'] }.join(', ') versions = f.rack.cd{ Dir['*'] }.join(', ')
puts "#{name} (#{versions} < #{version})" puts "#{f.name} (#{versions} < #{f.version})"
else else
puts name puts f.name
end end
end end
end end
@ -22,7 +22,7 @@ module Homebrew extend self
name = rack.basename.to_s name = rack.basename.to_s
f = Formula.factory name rescue nil f = Formula.factory name rescue nil
[rack, name, f.version] if f and not f.installed? f if f and not f.installed?
end.compact end.compact
end end
end end

View File

@ -14,24 +14,23 @@ module Homebrew extend self
outdated = if ARGV.named.empty? outdated = if ARGV.named.empty?
Homebrew.outdated_brews Homebrew.outdated_brews
else else
ARGV.formulae.map do |f| ARGV.formulae.each do |f|
raise "#{f} already upgraded" if f.installed? raise "#{f} already upgraded" if f.installed?
raise "#{f} not installed" unless f.rack.exist? and not f.rack.children.empty? raise "#{f} not installed" unless f.rack.exist? and not f.rack.children.empty?
[f.rack, f.name, f.version]
end end
end end
if outdated.length > 1 if outdated.length > 1
oh1 "Upgrading #{outdated.length} outdated package#{outdated.length.plural_s}, with result:" oh1 "Upgrading #{outdated.length} outdated package#{outdated.length.plural_s}, with result:"
puts outdated.map{ |_, name, version| "#{name} #{version}" } * ", " puts outdated.map{ |f| "#{f.name} #{f.version}" } * ", "
end end
outdated.each do |rack, name, version| outdated.each do |f|
installer = FormulaInstaller.new(Formula.factory(name)) installer = FormulaInstaller.new f
installer.show_header = false installer.show_header = false
oh1 "Upgrading #{name}" oh1 "Upgrading #{f.name}"
installer.install installer.install
Keg.new("#{rack}/#{version}").unlink Keg.new("#{f.rack}/#{f.version}").unlink
installer.caveats installer.caveats
installer.finish # includes link step installer.finish # includes link step
end end