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)
|
def print_outdated(formulae)
|
||||||
verbose = ($stdout.tty? || ARGV.verbose?) && !ARGV.flag?("--quiet")
|
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
|
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
|
else
|
||||||
puts f.full_name
|
puts f.full_name
|
||||||
end
|
end
|
||||||
@ -44,11 +53,20 @@ module Homebrew
|
|||||||
|
|
||||||
def print_outdated_json(formulae)
|
def print_outdated_json(formulae)
|
||||||
json = []
|
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,
|
json << { :name => f.full_name,
|
||||||
:installed_versions => f.outdated_versions.collect(&:to_s),
|
:installed_versions => outdated_versions.collect(&:to_s),
|
||||||
:current_version => f.pkg_version.to_s }
|
:current_version => current_version }
|
||||||
end
|
end
|
||||||
puts Utils::JSON.dump(json)
|
puts Utils::JSON.dump(json)
|
||||||
|
|
||||||
|
|||||||
@ -19,10 +19,15 @@ module Homebrew
|
|||||||
Homebrew.perform_preinstall_checks
|
Homebrew.perform_preinstall_checks
|
||||||
|
|
||||||
if ARGV.named.empty?
|
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?
|
exit 0 if outdated.empty?
|
||||||
else
|
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|
|
(ARGV.resolved_formulae - outdated).each do |f|
|
||||||
versions = f.installed_kegs.map { |keg| keg.version }
|
versions = f.installed_kegs.map { |keg| keg.version }
|
||||||
|
|||||||
@ -223,6 +223,10 @@ module HomebrewArgvExtension
|
|||||||
include? "--force-bottle"
|
include? "--force-bottle"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def fetch_head?
|
||||||
|
include? "--fetch-HEAD"
|
||||||
|
end
|
||||||
|
|
||||||
# eg. `foo -ns -i --bar` has three switches, n, s and i
|
# eg. `foo -ns -i --bar` has three switches, n, s and i
|
||||||
def switch?(char)
|
def switch?(char)
|
||||||
return false if char.length > 1
|
return false if char.length > 1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user