messages: record cask installations.

This is used to record installation times and also to determine
whether to display caveats.
This commit is contained in:
FnControlOption 2021-09-02 08:42:48 -07:00
parent 278c06f31d
commit eb16e10902
7 changed files with 33 additions and 28 deletions

View File

@ -166,6 +166,7 @@ module Cask
)
require "cask/installer"
start_time = Time.now
odebug "Started upgrade process for Cask #{old_cask}"
old_config = old_cask.config
@ -228,6 +229,9 @@ module Cask
old_cask_installer.revert_upgrade if started_upgrade
raise e
end
end_time = Time.now
Homebrew.messages.package_installed(new_cask.token, end_time - start_time)
end
end
end

View File

@ -88,6 +88,7 @@ module Cask
end
def install
start_time = Time.now
odebug "Cask::Installer#install"
old_config = @cask.config
@ -115,6 +116,8 @@ module Cask
purge_backed_up_versioned_files
puts summary
end_time = Time.now
Homebrew.messages.package_installed(@cask.token, end_time - start_time)
rescue
restore_backup
raise

View File

@ -95,7 +95,7 @@ module Homebrew
}],
[:switch, "--display-times", {
env: :display_install_times,
description: "Print install times for each formula at the end of the run.",
description: "Print install times for each package at the end of the run.",
}],
[:switch, "-i", "--interactive", {
description: "Download and patch <formula>, then open a shell. This allows the user to " \

View File

@ -67,7 +67,7 @@ module Homebrew
}],
[:switch, "--display-times", {
env: :display_install_times,
description: "Print install times for each formula at the end of the run.",
description: "Print install times for each package at the end of the run.",
}],
].each do |options|
send(*options)
@ -104,12 +104,10 @@ module Homebrew
only_upgrade_formulae = formulae.present? && casks.blank?
only_upgrade_casks = casks.present? && formulae.blank?
display_messages = !only_upgrade_casks && upgrade_outdated_formulae(formulae, args: args)
force_caveats = !only_upgrade_formulae && upgrade_outdated_casks(casks, args: args)
upgrade_outdated_formulae(formulae, args: args) unless only_upgrade_casks
upgrade_outdated_casks(casks, args: args) unless only_upgrade_formulae
return unless display_messages
Homebrew.messages.display_messages(force_caveats: force_caveats, display_times: args.display_times?)
Homebrew.messages.display_messages(display_times: args.display_times?)
end
sig { params(formulae: T::Array[Formula], args: CLI::Args).returns(T::Boolean) }

View File

@ -441,7 +441,7 @@ class FormulaInstaller
opoo "Nothing was installed to #{formula.prefix}" unless formula.latest_version_installed?
end_time = Time.now
Homebrew.messages.formula_installed(formula, end_time - start_time)
Homebrew.messages.package_installed(formula.name, end_time - start_time)
end
def check_conflicts

View File

@ -6,12 +6,12 @@
class Messages
extend T::Sig
attr_reader :caveats, :formula_count, :install_times
attr_reader :caveats, :package_count, :install_times
sig { void }
def initialize
@caveats = []
@formula_count = 0
@package_count = 0
@install_times = []
end
@ -19,9 +19,9 @@ class Messages
@caveats.push(package: package, caveats: caveats)
end
def formula_installed(f, elapsed_time)
@formula_count += 1
@install_times.push(formula: f.name, time: elapsed_time)
def package_installed(package, elapsed_time)
@package_count += 1
@install_times.push(package: package, time: elapsed_time)
end
def display_messages(force_caveats: false, display_times: false)
@ -30,8 +30,8 @@ class Messages
end
def display_caveats(force: false)
return if @formula_count.zero?
return if @formula_count == 1 && !force
return if @package_count.zero?
return if @package_count == 1 && !force
return if @caveats.empty?
oh1 "Caveats"
@ -45,7 +45,7 @@ class Messages
oh1 "Installation times"
install_times.each do |t|
puts format("%<formula>-20s %<time>10.3f s", t)
puts format("%<package>-20s %<time>10.3f s", t)
end
end
end

View File

@ -17,25 +17,25 @@ describe Messages do
end
end
describe "#formula_installed" do
it "increases the formula count" do
describe "#package_installed" do
it "increases the package count" do
expect {
messages.formula_installed(test_formula, elapsed_time)
}.to change(messages, :formula_count).by(1)
messages.package_installed(test_formula, elapsed_time)
}.to change(messages, :package_count).by(1)
end
it "adds to install_times" do
expect {
messages.formula_installed(test_formula, elapsed_time)
messages.package_installed(test_formula, elapsed_time)
}.to change { messages.install_times.count }.by(1)
end
end
describe "#display_messages" do
context "when formula_count is less than two" do
context "when package_count is less than two" do
before do
messages.record_caveats(test_formula, "Zsh completions were installed")
messages.formula_installed(test_formula, elapsed_time)
messages.package_installed(test_formula, elapsed_time)
end
it "doesn't print caveat details" do
@ -45,7 +45,7 @@ describe Messages do
context "when caveats is empty" do
before do
messages.formula_installed(test_formula, elapsed_time)
messages.package_installed(test_formula, elapsed_time)
end
it "doesn't print caveat details" do
@ -53,13 +53,13 @@ describe Messages do
end
end
context "when formula_count is greater than one and caveats are present" do
context "when package_count is greater than one and caveats are present" do
let(:test_formula2) { formula("bar") { url("https://brew.sh/bar-0.1.tgz") } }
before do
messages.record_caveats(test_formula, "Zsh completions were installed")
messages.formula_installed(test_formula, elapsed_time)
messages.formula_installed(test_formula2, elapsed_time)
messages.package_installed(test_formula, elapsed_time)
messages.package_installed(test_formula2, elapsed_time)
end
it "prints caveat details" do
@ -82,7 +82,7 @@ describe Messages do
context "when `install_times` is present" do
before do
messages.formula_installed(test_formula, elapsed_time)
messages.package_installed(test_formula, elapsed_time)
end
it "prints installation times" do