aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd
diff options
context:
space:
mode:
authorVlad Shablinsky2016-07-22 12:47:47 +0300
committerXu Cheng2016-08-06 21:25:56 +0800
commit9754dbada809260ccb8e61fedfdc8e20c9c93317 (patch)
tree606a9dbc9e9c7a286dcf16214cfa24145ce92270 /Library/Homebrew/cmd
parent04cb161ddb29ab26314684edc214650cdb192046 (diff)
downloadbrew-9754dbada809260ccb8e61fedfdc8e20c9c93317.tar.bz2
Update upgrade/outdated methods for head versions
Introduce `--fetch-HEAD` option. Without this option upgrade and outdated never fetch latest upstream commit to detect if HEAD is outdated -- tabs are used instead. However, if option is passed, we fetch commit from upstream, which is more time consuming, but we can be sure that version is up-to-date or outdated.
Diffstat (limited to 'Library/Homebrew/cmd')
-rw-r--r--Library/Homebrew/cmd/outdated.rb28
-rw-r--r--Library/Homebrew/cmd/upgrade.rb9
2 files changed, 30 insertions, 7 deletions
diff --git a/Library/Homebrew/cmd/outdated.rb b/Library/Homebrew/cmd/outdated.rb
index a318b65f6..7e9364416 100644
--- a/Library/Homebrew/cmd/outdated.rb
+++ b/Library/Homebrew/cmd/outdated.rb
@@ -32,10 +32,19 @@ module Homebrew
def print_outdated(formulae)
verbose = ($stdout.tty? || ARGV.verbose?) && !ARGV.flag?("--quiet")
+ fetch_head = ARGV.fetch_head?
- formulae.select(&:outdated?).each do |f|
+ outdated_formulae = formulae.select { |f| f.outdated?(:fetch_head => fetch_head) }
+
+ outdated_formulae.each do |f|
if verbose
- puts "#{f.full_name} (#{f.outdated_versions*", "} < #{f.pkg_version})"
+ outdated_versions = f.outdated_versions(:fetch_head => fetch_head)
+ current_version = if f.head? && outdated_versions.any? { |v| v.to_s == f.pkg_version.to_s }
+ "latest HEAD"
+ else
+ f.pkg_version.to_s
+ end
+ puts "#{f.full_name} (#{outdated_versions.join(", ")}) < #{current_version}"
else
puts f.full_name
end
@@ -44,11 +53,20 @@ module Homebrew
def print_outdated_json(formulae)
json = []
- outdated = formulae.select(&:outdated?).each do |f|
+ fetch_head = ARGV.fetch_head?
+ outdated_formulae = formulae.select { |f| f.outdated?(:fetch_head => fetch_head) }
+
+ outdated = outdated_formulae.each do |f|
+ outdated_versions = f.outdated_versions(:fetch_head => fetch_head)
+ current_version = if f.head? && outdated_versions.any? { |v| v.to_s == f.pkg_version.to_s }
+ "HEAD"
+ else
+ f.pkg_version.to_s
+ end
json << { :name => f.full_name,
- :installed_versions => f.outdated_versions.collect(&:to_s),
- :current_version => f.pkg_version.to_s }
+ :installed_versions => outdated_versions.collect(&:to_s),
+ :current_version => current_version }
end
puts Utils::JSON.dump(json)
diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb
index c96d2b1f5..1933c0501 100644
--- a/Library/Homebrew/cmd/upgrade.rb
+++ b/Library/Homebrew/cmd/upgrade.rb
@@ -19,10 +19,15 @@ module Homebrew
Homebrew.perform_preinstall_checks
if ARGV.named.empty?
- outdated = Formula.installed.select(&:outdated?)
+ outdated = Formula.installed.select do |f|
+ f.outdated?(:fetch_head => ARGV.fetch_head?)
+ end
+
exit 0 if outdated.empty?
else
- outdated = ARGV.resolved_formulae.select(&:outdated?)
+ outdated = ARGV.resolved_formulae.select do |f|
+ f.outdated?(:fetch_head => ARGV.fetch_head?)
+ end
(ARGV.resolved_formulae - outdated).each do |f|
versions = f.installed_kegs.map { |keg| keg.version }