aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/upgrade.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/cmd/upgrade.rb')
-rw-r--r--Library/Homebrew/cmd/upgrade.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb
new file mode 100644
index 000000000..f86e8a871
--- /dev/null
+++ b/Library/Homebrew/cmd/upgrade.rb
@@ -0,0 +1,35 @@
+require 'cmd/outdated'
+require 'cmd/install'
+
+class Fixnum
+ def plural_s
+ if self > 1 then "s" else "" end
+ end
+end
+
+module Homebrew extend self
+ def upgrade
+ Homebrew.perform_preinstall_checks
+
+ outdated = if ARGV.named.empty?
+ Homebrew.outdated_brews
+ else
+ ARGV.formulae.map{ |f| [f.prefix.parent, f.name, f.version] }
+ end
+
+ if outdated.count > 1
+ oh1 "Upgrading #{outdated.count} outdated package#{outdated.count.plural_s}, with result:"
+ puts outdated.map{ |_, name, version| "#{name} #{version}" } * ", "
+ end
+
+ outdated.each do |rack, name, version|
+ installer = FormulaInstaller.new(Formula.factory(name))
+ installer.show_header = false
+ oh1 "Upgrading #{name}"
+ installer.install
+ Keg.new("#{rack}/#{version}").unlink
+ installer.caveats
+ installer.finish # includes link step
+ end
+ end
+end