Merge pull request #4361 from apjanke/collected-caveats
Display collected caveats at end of `install` or `upgrade`
This commit is contained in:
commit
060c615fae
@ -249,6 +249,7 @@ module Homebrew
|
|||||||
Migrator.migrate_if_needed(f)
|
Migrator.migrate_if_needed(f)
|
||||||
install_formula(f)
|
install_formula(f)
|
||||||
end
|
end
|
||||||
|
Homebrew.messages.display_messages
|
||||||
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
||||||
TapFormulaUnreadableError, TapFormulaClassUnavailableError => e
|
TapFormulaUnreadableError, TapFormulaClassUnavailableError => e
|
||||||
# Need to rescue before `FormulaUnavailableError` (superclass of this)
|
# Need to rescue before `FormulaUnavailableError` (superclass of this)
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
require "formula_installer"
|
require "formula_installer"
|
||||||
require "development_tools"
|
require "development_tools"
|
||||||
|
require "messages"
|
||||||
|
|
||||||
module Homebrew
|
module Homebrew
|
||||||
module_function
|
module_function
|
||||||
@ -18,6 +19,7 @@ module Homebrew
|
|||||||
Migrator.migrate_if_needed(f)
|
Migrator.migrate_if_needed(f)
|
||||||
reinstall_formula(f)
|
reinstall_formula(f)
|
||||||
end
|
end
|
||||||
|
Homebrew.messages.display_messages
|
||||||
end
|
end
|
||||||
|
|
||||||
def reinstall_formula(f)
|
def reinstall_formula(f)
|
||||||
|
|||||||
@ -21,6 +21,7 @@ require "install"
|
|||||||
require "formula_installer"
|
require "formula_installer"
|
||||||
require "cleanup"
|
require "cleanup"
|
||||||
require "development_tools"
|
require "development_tools"
|
||||||
|
require "messages"
|
||||||
|
|
||||||
module Homebrew
|
module Homebrew
|
||||||
module_function
|
module_function
|
||||||
@ -102,6 +103,7 @@ module Homebrew
|
|||||||
onoe "#{f}: #{e}"
|
onoe "#{f}: #{e}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Homebrew.messages.display_messages
|
||||||
end
|
end
|
||||||
|
|
||||||
def upgrade_formula(f)
|
def upgrade_formula(f)
|
||||||
|
|||||||
@ -14,6 +14,7 @@ require "development_tools"
|
|||||||
require "cache_store"
|
require "cache_store"
|
||||||
require "linkage_checker"
|
require "linkage_checker"
|
||||||
require "install"
|
require "install"
|
||||||
|
require "messages"
|
||||||
|
|
||||||
class FormulaInstaller
|
class FormulaInstaller
|
||||||
include FormulaCellarChecks
|
include FormulaCellarChecks
|
||||||
@ -348,6 +349,7 @@ class FormulaInstaller
|
|||||||
build_bottle_postinstall if build_bottle?
|
build_bottle_postinstall if build_bottle?
|
||||||
|
|
||||||
opoo "Nothing was installed to #{formula.prefix}" unless formula.installed?
|
opoo "Nothing was installed to #{formula.prefix}" unless formula.installed?
|
||||||
|
Homebrew.messages.formula_installed(formula)
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_conflicts
|
def check_conflicts
|
||||||
@ -604,6 +606,7 @@ class FormulaInstaller
|
|||||||
return if caveats.empty?
|
return if caveats.empty?
|
||||||
@show_summary_heading = true
|
@show_summary_heading = true
|
||||||
ohai "Caveats", caveats.to_s
|
ohai "Caveats", caveats.to_s
|
||||||
|
Homebrew.messages.record_caveats(formula, caveats)
|
||||||
end
|
end
|
||||||
|
|
||||||
def finish
|
def finish
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
require "pathname"
|
require "pathname"
|
||||||
require "English"
|
require "English"
|
||||||
require "ostruct"
|
require "ostruct"
|
||||||
|
require "messages"
|
||||||
|
|
||||||
require "pp"
|
require "pp"
|
||||||
require "extend/ARGV"
|
require "extend/ARGV"
|
||||||
@ -49,6 +50,10 @@ module Homebrew
|
|||||||
@args ||= OpenStruct.new
|
@args ||= OpenStruct.new
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def messages
|
||||||
|
@messages ||= Messages.new
|
||||||
|
end
|
||||||
|
|
||||||
def raise_deprecation_exceptions?
|
def raise_deprecation_exceptions?
|
||||||
@raise_deprecation_exceptions == true
|
@raise_deprecation_exceptions == true
|
||||||
end
|
end
|
||||||
|
|||||||
31
Library/Homebrew/messages.rb
Normal file
31
Library/Homebrew/messages.rb
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# A Messages object collects messages that may need to be displayed together
|
||||||
|
# at the end of a multi-step `brew` command run
|
||||||
|
class Messages
|
||||||
|
attr_reader :caveats, :formula_count
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
@caveats = []
|
||||||
|
@formula_count = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def record_caveats(f, caveats)
|
||||||
|
@caveats.push(formula: f.name, caveats: caveats)
|
||||||
|
end
|
||||||
|
|
||||||
|
def formula_installed(_f)
|
||||||
|
@formula_count += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def display_messages
|
||||||
|
display_caveats
|
||||||
|
end
|
||||||
|
|
||||||
|
def display_caveats
|
||||||
|
return if @formula_count <= 1
|
||||||
|
return if @caveats.empty?
|
||||||
|
oh1 "Caveats"
|
||||||
|
@caveats.each do |c|
|
||||||
|
ohai c[:formula], c[:caveats]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
36
Library/Homebrew/test/messages_spec.rb
Normal file
36
Library/Homebrew/test/messages_spec.rb
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
require "messages"
|
||||||
|
require "spec_helper"
|
||||||
|
|
||||||
|
describe Messages do
|
||||||
|
before do
|
||||||
|
@m = Messages.new
|
||||||
|
f_foo = formula("foo") do
|
||||||
|
url "http://example.com/foo-0.1.tgz"
|
||||||
|
end
|
||||||
|
f_bar = formula("bar") do
|
||||||
|
url "http://example.com/bar-0.1.tgz"
|
||||||
|
end
|
||||||
|
f_baz = formula("baz") do
|
||||||
|
url "http://example.com/baz-0.1.tgz"
|
||||||
|
end
|
||||||
|
@m.formula_installed(f_foo)
|
||||||
|
@m.record_caveats(f_foo, "Zsh completions were installed")
|
||||||
|
@m.formula_installed(f_bar)
|
||||||
|
@m.record_caveats(f_bar, "Keg-only formula")
|
||||||
|
@m.formula_installed(f_baz)
|
||||||
|
@m.record_caveats(f_baz, "A valid GOPATH is required to use the go command")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "has the right installed-formula count" do
|
||||||
|
expect(@m.formula_count).to equal(3)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "has recorded caveats" do
|
||||||
|
expect(@m.caveats).to_not be_empty
|
||||||
|
end
|
||||||
|
|
||||||
|
it "maintained the order of recorded caveats" do
|
||||||
|
caveats_formula_order = @m.caveats.map { |x| x[:formula] }
|
||||||
|
expect(caveats_formula_order).to eq(["foo", "bar", "baz"])
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
x
Reference in New Issue
Block a user