Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

messages: record cask installations #11966

Merged
merged 2 commits into from Sep 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 7 additions & 1 deletion Library/Homebrew/cask/cmd/upgrade.rb
Expand Up @@ -166,6 +166,7 @@ def self.upgrade_cask(
)
require "cask/installer"

start_time = Time.now
odebug "Started upgrade process for Cask #{old_cask}"
old_config = old_cask.config

Expand Down Expand Up @@ -203,7 +204,9 @@ def self.upgrade_cask(
# Start new cask's installation steps
new_cask_installer.check_conflicts

puts new_cask_installer.caveats if new_cask_installer.caveats
if (caveats = new_cask_installer.caveats)
puts caveats
end

new_cask_installer.fetch

Expand All @@ -226,6 +229,9 @@ def self.upgrade_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
Expand Down
3 changes: 3 additions & 0 deletions Library/Homebrew/cask/installer.rb
Expand Up @@ -88,6 +88,7 @@ def stage
end

def install
start_time = Time.now
odebug "Cask::Installer#install"

old_config = @cask.config
Expand Down Expand Up @@ -115,6 +116,8 @@ def install
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
Expand Down
2 changes: 1 addition & 1 deletion Library/Homebrew/cmd/install.rb
Expand Up @@ -95,7 +95,7 @@ def install_args
}],
[: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 " \
Expand Down
10 changes: 4 additions & 6 deletions Library/Homebrew/cmd/upgrade.rb
Expand Up @@ -67,7 +67,7 @@ def upgrade_args
}],
[: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)
Expand Down Expand Up @@ -104,12 +104,10 @@ def upgrade
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) }
Expand Down
2 changes: 1 addition & 1 deletion Library/Homebrew/formula_installer.rb
Expand Up @@ -441,7 +441,7 @@ def install

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
Expand Down
16 changes: 8 additions & 8 deletions Library/Homebrew/messages.rb
Expand Up @@ -6,22 +6,22 @@
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

def record_caveats(package, caveats)
@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)
Expand All @@ -30,8 +30,8 @@ def display_messages(force_caveats: false, display_times: false)
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"
Expand All @@ -45,7 +45,7 @@ def display_install_times

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
24 changes: 12 additions & 12 deletions Library/Homebrew/test/messages_spec.rb
Expand Up @@ -17,25 +17,25 @@
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
Expand All @@ -45,21 +45,21 @@

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
expect { messages.display_messages }.not_to output.to_stdout
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
Expand All @@ -82,7 +82,7 @@

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
Expand Down