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