Skip to content

Commit

Permalink
Update upgrade/outdated methods for head versions
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
vladshablinsky authored and xu-cheng committed Aug 6, 2016
1 parent 04cb161 commit 9754dba
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 7 deletions.
28 changes: 23 additions & 5 deletions Library/Homebrew/cmd/outdated.rb
Expand Up @@ -32,10 +32,19 @@ def outdated

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
Expand All @@ -44,11 +53,20 @@ def print_outdated(formulae)

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)

Expand Down
9 changes: 7 additions & 2 deletions Library/Homebrew/cmd/upgrade.rb
Expand Up @@ -19,10 +19,15 @@ def upgrade
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 }
Expand Down
4 changes: 4 additions & 0 deletions Library/Homebrew/extend/ARGV.rb
Expand Up @@ -223,6 +223,10 @@ def force_bottle?
include? "--force-bottle"
end

def fetch_head?
include? "--fetch-HEAD"
end

# eg. `foo -ns -i --bar` has three switches, n, s and i
def switch?(char)
return false if char.length > 1
Expand Down

0 comments on commit 9754dba

Please sign in to comment.