From 2a683f2569614850f79534a8547fd96cc52c7850 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 15 Sep 2016 16:01:18 +0100 Subject: upgrade, outdated: follow alias changes --- Library/Homebrew/cmd/outdated.rb | 21 ++++++++++++++++----- Library/Homebrew/cmd/upgrade.rb | 28 +++++++++++++++++----------- 2 files changed, 33 insertions(+), 16 deletions(-) (limited to 'Library/Homebrew/cmd') diff --git a/Library/Homebrew/cmd/outdated.rb b/Library/Homebrew/cmd/outdated.rb index 7afa41df4..f9739cd7a 100644 --- a/Library/Homebrew/cmd/outdated.rb +++ b/Library/Homebrew/cmd/outdated.rb @@ -43,15 +43,26 @@ module Homebrew outdated_formulae.each do |f| if verbose - 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 } + outdated_kegs = f.outdated_kegs(fetch_head: fetch_head) + + current_version = if f.alias_changed? + latest = f.latest_formula + "#{latest.name} (#{latest.pkg_version})" + elsif f.head? && outdated_kegs.any? { |k| k.version.to_s == f.pkg_version.to_s } + # There is a newer HEAD but the version number has not changed. "latest HEAD" else f.pkg_version.to_s end - puts "#{f.full_name} (#{outdated_versions.join(", ")}) < #{current_version}" + + outdated_versions = outdated_kegs. + group_by(&:name). + sort_by(&:first). + map { |name, kegs| "#{name} (#{kegs.map(&:version) * ", "})" } * ", " + + puts "#{outdated_versions} < #{current_version}" else - puts f.full_name + puts f.full_installed_specified_name end end end @@ -62,7 +73,7 @@ module Homebrew 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) + outdated_versions = f.outdated_kegs(fetch_head: fetch_head).map(&:version) current_version = if f.head? && outdated_versions.any? { |v| v.to_s == f.pkg_version.to_s } "HEAD" else diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index 6968fbda8..c56a73384 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -37,10 +37,10 @@ module Homebrew (ARGV.resolved_formulae - outdated).each do |f| versions = f.installed_kegs.map(&:version) if versions.empty? - onoe "#{f.full_name} not installed" + onoe "#{f.full_specified_name} not installed" else version = versions.max - onoe "#{f.full_name} #{version} already installed" + onoe "#{f.full_specified_name} #{version} already installed" end end exit 1 if outdated.empty? @@ -51,19 +51,21 @@ module Homebrew outdated -= pinned end - if outdated.empty? + formulae_to_install = outdated.map(&:latest_formula) + + if formulae_to_install.empty? oh1 "No packages to upgrade" else - oh1 "Upgrading #{outdated.length} outdated package#{plural(outdated.length)}, with result:" - puts outdated.map { |f| "#{f.full_name} #{f.pkg_version}" } * ", " + oh1 "Upgrading #{formulae_to_install.length} outdated package#{plural(formulae_to_install.length)}, with result:" + puts formulae_to_install.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", " end unless upgrade_pinned? || pinned.empty? oh1 "Not upgrading #{pinned.length} pinned package#{plural(pinned.length)}:" - puts pinned.map { |f| "#{f.full_name} #{f.pkg_version}" } * ", " + puts pinned.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", " end - outdated.each do |f| + formulae_to_install.each do |f| upgrade_formula(f) next unless ARGV.include?("--cleanup") next unless f.installed? @@ -76,7 +78,11 @@ module Homebrew end def upgrade_formula(f) - outdated_keg = Keg.new(f.linked_keg.resolved_path) if f.linked_keg.directory? + formulae_maybe_with_kegs = [f] + f.old_installed_formulae + outdated_kegs = formulae_maybe_with_kegs. + map(&:linked_keg). + select(&:directory?). + map { |k| Keg.new(k.resolved_path) } fi = FormulaInstaller.new(f) fi.options = f.build.used_options @@ -87,12 +93,12 @@ module Homebrew fi.debug = ARGV.debug? fi.prelude - oh1 "Upgrading #{f.full_name}" + oh1 "Upgrading #{f.full_specified_name}" # first we unlink the currently active keg for this formula otherwise it is # possible for the existing build to interfere with the build we are about to # do! Seriously, it happens! - outdated_keg.unlink if outdated_keg + outdated_kegs.each(&:unlink) fi.install fi.finish @@ -117,7 +123,7 @@ module Homebrew ensure # restore previous installation state if build failed begin - outdated_keg.link if outdated_keg && !f.installed? + outdated_kegs.each(&:link) if !f.installed? rescue nil end -- cgit v1.2.3 From c874b4e4c2590cbb775583892f18ecdc96ca897c Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 15 Sep 2016 16:01:59 +0100 Subject: install: don't install alias if already installed --- Library/Homebrew/cmd/install.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'Library/Homebrew/cmd') diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 99cb75353..fdaf68d53 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -133,9 +133,14 @@ module Homebrew raise "No devel block is defined for #{f.full_name}" end - if f.installed? - msg = "#{f.full_name}-#{f.installed_version} already installed" - msg << ", it's just not linked" unless f.linked_keg.symlink? || f.keg_only? + current = f if f.installed? + current ||= f.old_installed_formulae.first + + if current + msg = "#{current.full_name}-#{current.installed_version} already installed" + unless current.linked_keg.symlink? || current.keg_only? + msg << ", it's just not linked" + end opoo msg elsif f.migration_needed? && !ARGV.force? # Check if the formula we try to install is the same as installed -- cgit v1.2.3 From d3788c58efbae7c841faeb89a3eea539862245f7 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 15 Sep 2016 15:53:04 +0100 Subject: brew outdated: use full name in verbose --- Library/Homebrew/cmd/outdated.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'Library/Homebrew/cmd') diff --git a/Library/Homebrew/cmd/outdated.rb b/Library/Homebrew/cmd/outdated.rb index f9739cd7a..4eb55fc50 100644 --- a/Library/Homebrew/cmd/outdated.rb +++ b/Library/Homebrew/cmd/outdated.rb @@ -56,9 +56,11 @@ module Homebrew end outdated_versions = outdated_kegs. - group_by(&:name). - sort_by(&:first). - map { |name, kegs| "#{name} (#{kegs.map(&:version) * ", "})" } * ", " + group_by { |keg| Formulary.from_keg(keg) }. + sort_by { |formula, kegs| formula.full_name }. + map do |formula, kegs| + "#{formula.full_name} (#{kegs.map(&:version) * ", "})" + end * ", " puts "#{outdated_versions} < #{current_version}" else -- cgit v1.2.3 From 8bae49941c5fc3894efad334c9780d10c2572592 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Sat, 17 Sep 2016 17:05:51 +0100 Subject: outdated: prefer .join over *. --- Library/Homebrew/cmd/outdated.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Library/Homebrew/cmd') diff --git a/Library/Homebrew/cmd/outdated.rb b/Library/Homebrew/cmd/outdated.rb index 4eb55fc50..dfb64a282 100644 --- a/Library/Homebrew/cmd/outdated.rb +++ b/Library/Homebrew/cmd/outdated.rb @@ -59,8 +59,8 @@ module Homebrew group_by { |keg| Formulary.from_keg(keg) }. sort_by { |formula, kegs| formula.full_name }. map do |formula, kegs| - "#{formula.full_name} (#{kegs.map(&:version) * ", "})" - end * ", " + "#{formula.full_name} (#{kegs.map(&:version).join(", ")})" + end.join(", ") puts "#{outdated_versions} < #{current_version}" else -- cgit v1.2.3