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.
This commit is contained in:
parent
04cb161ddb
commit
9754dbada8
@ -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)
|
||||
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -223,6 +223,10 @@ module HomebrewArgvExtension
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user