diff --git a/xbar/brew-updates.1h.rb b/xbar/brew-updates.1h.rb
index 8c33adc..2fc0c75 100755
--- a/xbar/brew-updates.1h.rb
+++ b/xbar/brew-updates.1h.rb
@@ -2,7 +2,7 @@
# frozen_string_literal: true
# Brew Updates
-# v2.3.3
+# v2.4.0
# Jim Myhrberg
# jimeh
# List and manage outdated Homebrew formulas and casks
@@ -11,6 +11,7 @@
# https://github.com/jimeh/dotfiles/tree/main/xbar
#
# string(VAR_BREW_PATH=""): Path to "brew" executable.
+# boolean(VAR_GREEDY=false): Pass --greedy to brew outdated command
# rubocop:disable Lint/ShadowingOuterLocalVariable
# rubocop:disable Metrics/AbcSize
@@ -289,6 +290,13 @@ module Brew
shell: [brew_path, 'upgrade', '--cask'] + casks.map(&:name)
)
end
+
+ printer.sep
+ if use_greedy?
+ printer.item('Disable greedy', rpc: ['disable_greedy'], refresh: true)
+ else
+ printer.item('Enable greedy', rpc: ['enable_greedy'], refresh: true)
+ end
end
print_formulas(printer)
@@ -297,8 +305,26 @@ module Brew
printer.sep
end
+ def enable_greedy
+ config['VAR_GREEDY'] = true
+ config.save
+ end
+
+ def disable_greedy
+ config['VAR_GREEDY'] = false
+ config.save
+ end
+
private
+ def config
+ @config ||= Xbar::Config.new
+ end
+
+ def use_greedy?
+ [true, 'true'].include?(config.fetch('VAR_GREEDY', 'false'))
+ end
+
def status_label
label = []
label << "#{formulas.size} formulas" if formulas.size.positive?
@@ -428,8 +454,16 @@ module Brew
@casks ||= outdated['casks'].map { |line| Cask.new(line) }
end
+ def outdated_args
+ [
+ 'outdated',
+ (use_greedy? ? '--greedy' : nil),
+ '--json=v2'
+ ].compact
+ end
+
def outdated
- @outdated ||= JSON.parse(cmd(brew_path, 'outdated', '--json'))
+ @outdated ||= JSON.parse(cmd(brew_path, *outdated_args))
end
end
end