diff options
| author | Vlad Shablinsky | 2016-07-22 12:47:47 +0300 |
|---|---|---|
| committer | Xu Cheng | 2016-08-06 21:25:56 +0800 |
| commit | 9754dbada809260ccb8e61fedfdc8e20c9c93317 (patch) | |
| tree | 606a9dbc9e9c7a286dcf16214cfa24145ce92270 /Library/Homebrew/cmd | |
| parent | 04cb161ddb29ab26314684edc214650cdb192046 (diff) | |
| download | brew-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.rb | 28 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/upgrade.rb | 9 |
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 } |
