From 14c58e849f7c986eb8ed336a5e786e1c17ca16cc Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sun, 26 Feb 2023 18:02:58 +0000 Subject: [PATCH] feat(xbar/brew-updates): add greedy option that displays more cask updates --- xbar/brew-updates.1h.rb | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) 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