Update commands to use cask install receipts

This commit is contained in:
Rylan Polster 2024-06-25 00:19:22 -04:00
parent acd60181c2
commit 673b171b10
No known key found for this signature in database
GPG Key ID: 46A744940CFF4D64
2 changed files with 38 additions and 21 deletions

View File

@ -12,7 +12,7 @@ module Cask
output << "#{Formatter.url(cask.homepage)}\n" if cask.homepage output << "#{Formatter.url(cask.homepage)}\n" if cask.homepage
deprecate_disable = DeprecateDisable.message(cask) deprecate_disable = DeprecateDisable.message(cask)
output << "#{deprecate_disable.capitalize}\n" if deprecate_disable output << "#{deprecate_disable.capitalize}\n" if deprecate_disable
output << installation_info(cask) output << "#{installation_info(cask)}\n"
repo = repo_info(cask) repo = repo_info(cask)
output << "#{repo}\n" if repo output << "#{repo}\n" if repo
output << name_info(cask) output << name_info(cask)
@ -37,7 +37,7 @@ module Cask
end end
def self.installation_info(cask) def self.installation_info(cask)
return "Not installed\n" unless cask.installed? return "Not installed" unless cask.installed?
versioned_staged_path = cask.caskroom_path.join(cask.installed_version) versioned_staged_path = cask.caskroom_path.join(cask.installed_version)
path_details = if versioned_staged_path.exist? path_details = if versioned_staged_path.exist?
@ -46,7 +46,12 @@ module Cask
Formatter.error("does not exist") Formatter.error("does not exist")
end end
"Installed\n#{versioned_staged_path} (#{path_details})\n" tab = Tab.for_cask(cask)
info = ["Installed"]
info << "#{versioned_staged_path} (#{path_details})"
info << " #{tab}" if tab.tabfile&.exist?
info.join("\n")
end end
def self.name_info(cask) def self.name_info(cask)

View File

@ -10,7 +10,7 @@ module Homebrew
class TabCmd < AbstractCommand class TabCmd < AbstractCommand
cmd_args do cmd_args do
description <<~EOS description <<~EOS
Edit tab information for installed formulae. Edit tab information for installed formulae or casks.
This can be useful when you want to control whether an installed This can be useful when you want to control whether an installed
formula should be removed by `brew autoremove`. formula should be removed by `brew autoremove`.
@ -19,13 +19,18 @@ module Homebrew
EOS EOS
switch "--installed-on-request", switch "--installed-on-request",
description: "Mark <formula> as installed on request." description: "Mark <installed_formula> or <installed_cask> as installed on request."
switch "--no-installed-on-request", switch "--no-installed-on-request",
description: "Mark <formula> as not installed on request." description: "Mark <installed_formula> or <installed_cask> as not installed on request."
switch "--formula", "--formulae",
description: "Only mark formulae."
switch "--cask", "--casks",
description: "Only mark casks."
conflicts "--formula", "--cask"
conflicts "--installed-on-request", "--no-installed-on-request" conflicts "--installed-on-request", "--no-installed-on-request"
named_args :formula, min: 1 named_args [:installed_formula, :installed_cask], min: 1
end end
sig { override.void } sig { override.void }
@ -37,38 +42,45 @@ module Homebrew
end end
raise UsageError, "No marking option specified." if installed_on_request.nil? raise UsageError, "No marking option specified." if installed_on_request.nil?
formulae = args.named.to_formulae formulae, casks = args.named.to_formulae_to_casks
if (formulae_not_installed = formulae.reject(&:any_version_installed?)).any? formulae_not_installed = formulae.reject(&:any_version_installed?)
formula_names = formulae_not_installed.map(&:name) casks_not_installed = casks.reject(&:installed?)
is_or_are = (formula_names.length == 1) ? "is" : "are" if formulae_not_installed.any? || casks_not_installed.any?
odie "#{formula_names.to_sentence} #{is_or_are} not installed." names = formulae_not_installed.map(&:name) + casks_not_installed.map(&:token)
is_or_are = (names.length == 1) ? "is" : "are"
odie "#{names.to_sentence} #{is_or_are} not installed."
end end
formulae.each do |formula| [*formulae, *casks].each do |formula_or_cask|
update_tab formula, installed_on_request: update_tab formula_or_cask, installed_on_request:
end end
end end
private private
sig { params(formula: Formula, installed_on_request: T::Boolean).void } sig { params(formula_or_cask: T.any(Formula, Cask::Cask), installed_on_request: T::Boolean).void }
def update_tab(formula, installed_on_request:) def update_tab(formula_or_cask, installed_on_request:)
tab = Tab.for_formula(formula) name, tab = if formula_or_cask.is_a?(Formula)
unless tab.tabfile.exist? [formula_or_cask.name, Tab.for_formula(formula_or_cask)]
else
[formula_or_cask.token, formula_or_cask.tab]
end
if tab.tabfile.blank? || !tab.tabfile.exist?
raise ArgumentError, raise ArgumentError,
"Tab file for #{formula.name} does not exist." "Tab file for #{name} does not exist."
end end
installed_on_request_str = "#{"not " unless installed_on_request}installed on request" installed_on_request_str = "#{"not " unless installed_on_request}installed on request"
if (tab.installed_on_request && installed_on_request) || if (tab.installed_on_request && installed_on_request) ||
(!tab.installed_on_request && !installed_on_request) (!tab.installed_on_request && !installed_on_request)
ohai "#{formula.name} is already marked as #{installed_on_request_str}." ohai "#{name} is already marked as #{installed_on_request_str}."
return return
end end
tab.installed_on_request = installed_on_request tab.installed_on_request = installed_on_request
tab.write tab.write
ohai "#{formula.name} is now marked as #{installed_on_request_str}." ohai "#{name} is now marked as #{installed_on_request_str}."
end end
end end
end end