Merge pull request #4361 from apjanke/collected-caveats

Display collected caveats at end of `install` or `upgrade`
This commit is contained in:
Mike McQuaid 2018-07-13 19:22:55 +01:00 committed by GitHub
commit 060c615fae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 80 additions and 0 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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

View 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

View 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