From 057b3a3502afc9bc5395e9f661aec11003e9f668 Mon Sep 17 00:00:00 2001 From: Bevan Kay Date: Wed, 30 Jun 2021 11:13:21 +1000 Subject: [PATCH] adds an option to skip unversioned casks in outdated and upgrade command --- Library/Homebrew/cask/cask.rb | 12 ++++++------ Library/Homebrew/cask/cmd/upgrade.rb | 8 +++++++- Library/Homebrew/cmd/outdated.rb | 7 +++++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/cask/cask.rb b/Library/Homebrew/cask/cask.rb index caf666397c..460918883e 100644 --- a/Library/Homebrew/cask/cask.rb +++ b/Library/Homebrew/cask/cask.rb @@ -113,16 +113,16 @@ module Cask @caskroom_path ||= Caskroom.path.join(token) end - def outdated?(greedy: false) - !outdated_versions(greedy: greedy).empty? + def outdated?(greedy: false, skip_unversioned: false) + !outdated_versions(greedy: greedy, skip_unversioned: skip_unversioned).empty? end - def outdated_versions(greedy: false) + def outdated_versions(greedy: false, skip_unversioned: false) # special case: tap version is not available return [] if version.nil? if greedy - return versions if version.latest? + return versions if version.latest? && !skip_unversioned elsif auto_updates return [] end @@ -137,10 +137,10 @@ module Cask installed.reject { |v| v == version } end - def outdated_info(greedy, verbose, json) + def outdated_info(greedy, verbose, json, skip_unversioned) return token if !verbose && !json - installed_versions = outdated_versions(greedy: greedy).join(", ") + installed_versions = outdated_versions(greedy: greedy, skip_unversioned: skip_unversioned).join(", ") if json { diff --git a/Library/Homebrew/cask/cmd/upgrade.rb b/Library/Homebrew/cask/cmd/upgrade.rb index 1ba58f831a..ab292f270c 100644 --- a/Library/Homebrew/cask/cmd/upgrade.rb +++ b/Library/Homebrew/cask/cmd/upgrade.rb @@ -19,6 +19,9 @@ module Cask [:switch, "--greedy", { description: "Also include casks with `auto_updates true` or `version :latest`.", }], + [:switch, "--skip-unversioned", { + description: "Skip casks with `version :latest`.", + }] ].freeze sig { returns(Homebrew::CLI::Parser) } @@ -42,6 +45,7 @@ module Cask *casks, force: args.force?, greedy: args.greedy?, + skip_unversioned: args.skip_unversioned?, dry_run: args.dry_run?, binaries: args.binaries?, quarantine: args.quarantine?, @@ -58,6 +62,7 @@ module Cask args: Homebrew::CLI::Args, force: T.nilable(T::Boolean), greedy: T.nilable(T::Boolean), + skip_unversioned: T.nilable(T::Boolean), dry_run: T.nilable(T::Boolean), skip_cask_deps: T.nilable(T::Boolean), verbose: T.nilable(T::Boolean), @@ -71,6 +76,7 @@ module Cask args:, force: false, greedy: false, + skip_unversioned: false, dry_run: false, skip_cask_deps: false, verbose: false, @@ -83,7 +89,7 @@ module Cask outdated_casks = if casks.empty? Caskroom.casks(config: Config.from_args(args)).select do |cask| - cask.outdated?(greedy: greedy) + cask.outdated?(greedy: greedy, skip_unversioned: args.skip_unversioned?) end else casks.select do |cask| diff --git a/Library/Homebrew/cmd/outdated.rb b/Library/Homebrew/cmd/outdated.rb index fb5246be21..20c6552ff1 100644 --- a/Library/Homebrew/cmd/outdated.rb +++ b/Library/Homebrew/cmd/outdated.rb @@ -38,6 +38,9 @@ module Homebrew switch "--greedy", description: "Print outdated casks with `auto_updates` or `version :latest`." + switch "--skip-unversioned", + description: "Print outdated casks with `auto_updates` but no `version :latest`." + conflicts "--quiet", "--verbose", "--json" conflicts "--formula", "--cask" @@ -116,7 +119,7 @@ module Homebrew else c = formula_or_cask - puts c.outdated_info(args.greedy?, verbose?, false) + puts c.outdated_info(args.greedy?, verbose?, false, args.skip_unversioned?) end end end @@ -191,7 +194,7 @@ module Homebrew if formula_or_cask.is_a?(Formula) formula_or_cask.outdated?(fetch_head: args.fetch_HEAD?) else - formula_or_cask.outdated?(greedy: args.greedy?) + formula_or_cask.outdated?(greedy: args.greedy?, skip_unversioned: args.skip_unversioned?) end end end