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)
|
||||
install_formula(f)
|
||||
end
|
||||
Homebrew.messages.display_messages
|
||||
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
||||
TapFormulaUnreadableError, TapFormulaClassUnavailableError => e
|
||||
# Need to rescue before `FormulaUnavailableError` (superclass of this)
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
require "formula_installer"
|
||||
require "development_tools"
|
||||
require "messages"
|
||||
|
||||
module Homebrew
|
||||
module_function
|
||||
@ -18,6 +19,7 @@ module Homebrew
|
||||
Migrator.migrate_if_needed(f)
|
||||
reinstall_formula(f)
|
||||
end
|
||||
Homebrew.messages.display_messages
|
||||
end
|
||||
|
||||
def reinstall_formula(f)
|
||||
|
||||
@ -21,6 +21,7 @@ require "install"
|
||||
require "formula_installer"
|
||||
require "cleanup"
|
||||
require "development_tools"
|
||||
require "messages"
|
||||
|
||||
module Homebrew
|
||||
module_function
|
||||
@ -102,6 +103,7 @@ module Homebrew
|
||||
onoe "#{f}: #{e}"
|
||||
end
|
||||
end
|
||||
Homebrew.messages.display_messages
|
||||
end
|
||||
|
||||
def upgrade_formula(f)
|
||||
|
||||
@ -14,6 +14,7 @@ require "development_tools"
|
||||
require "cache_store"
|
||||
require "linkage_checker"
|
||||
require "install"
|
||||
require "messages"
|
||||
|
||||
class FormulaInstaller
|
||||
include FormulaCellarChecks
|
||||
@ -348,6 +349,7 @@ class FormulaInstaller
|
||||
build_bottle_postinstall if build_bottle?
|
||||
|
||||
opoo "Nothing was installed to #{formula.prefix}" unless formula.installed?
|
||||
Homebrew.messages.formula_installed(formula)
|
||||
end
|
||||
|
||||
def check_conflicts
|
||||
@ -604,6 +606,7 @@ class FormulaInstaller
|
||||
return if caveats.empty?
|
||||
@show_summary_heading = true
|
||||
ohai "Caveats", caveats.to_s
|
||||
Homebrew.messages.record_caveats(formula, caveats)
|
||||
end
|
||||
|
||||
def finish
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
require "pathname"
|
||||
require "English"
|
||||
require "ostruct"
|
||||
require "messages"
|
||||
|
||||
require "pp"
|
||||
require "extend/ARGV"
|
||||
@ -49,6 +50,10 @@ module Homebrew
|
||||
@args ||= OpenStruct.new
|
||||
end
|
||||
|
||||
def messages
|
||||
@messages ||= Messages.new
|
||||
end
|
||||
|
||||
def raise_deprecation_exceptions?
|
||||
@raise_deprecation_exceptions == true
|
||||
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