mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 11:06:41 +00:00
fix(xbar/brew-updates): fix issue with formula vs cask name conflicts
When upgrading all (formulas and casks), brew would yield an error if there's a formula and cask installed with the same name.
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
# rubocop:disable Layout/LineLength
|
# rubocop:disable Layout/LineLength
|
||||||
|
|
||||||
# <xbar.title>Brew Updates</xbar.title>
|
# <xbar.title>Brew Updates</xbar.title>
|
||||||
# <xbar.version>v2.6.0</xbar.version>
|
# <xbar.version>v2.6.1</xbar.version>
|
||||||
# <xbar.author>Jim Myhrberg</xbar.author>
|
# <xbar.author>Jim Myhrberg</xbar.author>
|
||||||
# <xbar.author.github>jimeh</xbar.author.github>
|
# <xbar.author.github>jimeh</xbar.author.github>
|
||||||
# <xbar.desc>List and manage outdated Homebrew formulas and casks</xbar.desc>
|
# <xbar.desc>List and manage outdated Homebrew formulas and casks</xbar.desc>
|
||||||
@@ -302,16 +302,25 @@ module Brew
|
|||||||
printer.sep
|
printer.sep
|
||||||
all_formulas = formulas.reject { |f| upgrade_all_exclude?(f.name) }
|
all_formulas = formulas.reject { |f| upgrade_all_exclude?(f.name) }
|
||||||
all_casks = casks.reject { |c| upgrade_all_exclude?(c.name) }
|
all_casks = casks.reject { |c| upgrade_all_exclude?(c.name) }
|
||||||
excluded = ((formulas - all_formulas) + (casks - all_casks))
|
excluded = (formulas - all_formulas) + (casks - all_casks)
|
||||||
|
|
||||||
if all_formulas.size.positive? && all_casks.size.positive?
|
if all_formulas.size.positive? && all_casks.size.positive?
|
||||||
names = all_formulas.map(&:name) + all_casks.map(&:name)
|
cmds = []
|
||||||
|
if all_formulas.size.positive?
|
||||||
|
cmds += [brew_path, 'upgrade', '--formula'] +
|
||||||
|
all_formulas.map(&:name)
|
||||||
|
end
|
||||||
|
|
||||||
|
if all_casks.size.positive?
|
||||||
|
cmds << '&&' if cmds.size.positive?
|
||||||
|
cmds += [brew_path, 'upgrade', '--cask'] +
|
||||||
|
all_casks.map(&:name)
|
||||||
|
end
|
||||||
|
|
||||||
printer.item(
|
printer.item(
|
||||||
"⬆️ Upgrade All (#{all_formulas.size + all_casks.size})",
|
"⬆️ Upgrade All (#{all_formulas.size + all_casks.size})",
|
||||||
terminal: true, refresh: true,
|
terminal: true, refresh: true,
|
||||||
shell: [
|
shell: (cmds + post_commands).flatten
|
||||||
brew_path, 'upgrade'
|
|
||||||
] + names + post_commands(names)
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
if all_formulas.size.positive?
|
if all_formulas.size.positive?
|
||||||
@@ -321,7 +330,7 @@ module Brew
|
|||||||
terminal: true, refresh: true,
|
terminal: true, refresh: true,
|
||||||
shell: [
|
shell: [
|
||||||
brew_path, 'upgrade', '--formula'
|
brew_path, 'upgrade', '--formula'
|
||||||
] + names + post_commands(names)
|
] + names + post_commands
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
if all_casks.size.positive?
|
if all_casks.size.positive?
|
||||||
@@ -331,14 +340,15 @@ module Brew
|
|||||||
terminal: true, refresh: true,
|
terminal: true, refresh: true,
|
||||||
shell: [
|
shell: [
|
||||||
brew_path, 'upgrade', '--cask'
|
brew_path, 'upgrade', '--cask'
|
||||||
] + names + post_commands(names)
|
] + names + post_commands
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
if excluded.size.positive?
|
if excluded.size.positive?
|
||||||
printer.sep
|
printer.sep
|
||||||
printer.item("Excluded (#{excluded.size}):")
|
printer.item("Excluded (#{excluded.size}):")
|
||||||
excluded.sort_by(&:name).each do |item|
|
excluded.sort_by(&:brew_name).each do |item|
|
||||||
printer.item(item.name)
|
type = item.is_a?(Formula) ? 'Formula' : 'Cask'
|
||||||
|
printer.item("#{item.name} (#{type})")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -481,8 +491,8 @@ module Brew
|
|||||||
"(#{formula.current_version} → #{formula.latest_version})",
|
"(#{formula.current_version} → #{formula.latest_version})",
|
||||||
terminal: true, refresh: true,
|
terminal: true, refresh: true,
|
||||||
shell: [
|
shell: [
|
||||||
brew_path, 'upgrade', formula.name
|
brew_path, 'upgrade', '--formula', formula.name
|
||||||
] + post_commands([formula.name])
|
] + post_commands
|
||||||
)
|
)
|
||||||
printer.sep
|
printer.sep
|
||||||
printer.item("→ Installed: #{formula.installed_versions.join(', ')}")
|
printer.item("→ Installed: #{formula.installed_versions.join(', ')}")
|
||||||
@@ -513,8 +523,8 @@ module Brew
|
|||||||
'Yes',
|
'Yes',
|
||||||
terminal: true, refresh: true,
|
terminal: true, refresh: true,
|
||||||
shell: [
|
shell: [
|
||||||
brew_path, 'uninstall', formula.name
|
brew_path, 'uninstall', '--formula', formula.name
|
||||||
] + post_commands([formula.name])
|
] + post_commands
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -537,7 +547,7 @@ module Brew
|
|||||||
terminal: true, refresh: true,
|
terminal: true, refresh: true,
|
||||||
shell: [
|
shell: [
|
||||||
brew_path, 'upgrade', '--cask', cask.name
|
brew_path, 'upgrade', '--cask', cask.name
|
||||||
] + post_commands([cask.name])
|
] + post_commands
|
||||||
)
|
)
|
||||||
printer.sep
|
printer.sep
|
||||||
printer.item("→ Installed: #{cask.installed_version}")
|
printer.item("→ Installed: #{cask.installed_version}")
|
||||||
@@ -564,7 +574,7 @@ module Brew
|
|||||||
terminal: true, refresh: true,
|
terminal: true, refresh: true,
|
||||||
shell: [
|
shell: [
|
||||||
brew_path, 'uninstall', '--cask', cask.name
|
brew_path, 'uninstall', '--cask', cask.name
|
||||||
] + post_commands([cask.name])
|
] + post_commands
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -601,17 +611,17 @@ module Brew
|
|||||||
'Yes',
|
'Yes',
|
||||||
terminal: true, refresh: true,
|
terminal: true, refresh: true,
|
||||||
shell: [
|
shell: [
|
||||||
brew_path, 'uninstall', formula.name
|
brew_path, 'uninstall', '--formula', formula.name
|
||||||
] + post_commands([formula.name])
|
] + post_commands
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def post_commands(cleanup_names = [])
|
def post_commands
|
||||||
cmds = []
|
cmds = []
|
||||||
cmds += ['&&', brew_path, 'cleanup'] + cleanup_names if post_run_cleanup?
|
cmds += ['&&', brew_path, 'cleanup'] if post_run_cleanup?
|
||||||
cmds += ['&&', brew_path, 'doctor'] if post_run_doctor?
|
cmds += ['&&', brew_path, 'doctor'] if post_run_doctor?
|
||||||
|
|
||||||
cmds
|
cmds
|
||||||
|
|||||||
Reference in New Issue
Block a user