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

View File

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

View File

@ -95,7 +95,7 @@ module Homebrew
}], }],
[:switch, "--display-times", { [:switch, "--display-times", {
env: :display_install_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", { [:switch, "-i", "--interactive", {
description: "Download and patch <formula>, then open a shell. This allows the user to " \ 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", { [:switch, "--display-times", {
env: :display_install_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| ].each do |options|
send(*options) send(*options)
@ -104,12 +104,10 @@ module Homebrew
only_upgrade_formulae = formulae.present? && casks.blank? only_upgrade_formulae = formulae.present? && casks.blank?
only_upgrade_casks = casks.present? && formulae.blank? only_upgrade_casks = casks.present? && formulae.blank?
display_messages = !only_upgrade_casks && upgrade_outdated_formulae(formulae, args: args) upgrade_outdated_formulae(formulae, args: args) unless only_upgrade_casks
force_caveats = !only_upgrade_formulae && upgrade_outdated_casks(casks, args: args) upgrade_outdated_casks(casks, args: args) unless only_upgrade_formulae
return unless display_messages Homebrew.messages.display_messages(display_times: args.display_times?)
Homebrew.messages.display_messages(force_caveats: force_caveats, display_times: args.display_times?)
end end
sig { params(formulae: T::Array[Formula], args: CLI::Args).returns(T::Boolean) } 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? opoo "Nothing was installed to #{formula.prefix}" unless formula.latest_version_installed?
end_time = Time.now end_time = Time.now
Homebrew.messages.formula_installed(formula, end_time - start_time) Homebrew.messages.package_installed(formula.name, end_time - start_time)
end end
def check_conflicts def check_conflicts

View File

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

View File

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