diff --git a/Library/Homebrew/cask/cask.rb b/Library/Homebrew/cask/cask.rb index 460918883e..28199331dd 100644 --- a/Library/Homebrew/cask/cask.rb +++ b/Library/Homebrew/cask/cask.rb @@ -113,16 +113,20 @@ module Cask @caskroom_path ||= Caskroom.path.join(token) end - def outdated?(greedy: false, skip_unversioned: false) - !outdated_versions(greedy: greedy, skip_unversioned: skip_unversioned).empty? + def outdated?(greedy: false, greedy_latest: false, greedy_auto_updates: false) + !outdated_versions(greedy: greedy, greedy_latest: greedy_latest, greedy_auto_updates: greedy_auto_updates).empty? end - def outdated_versions(greedy: false, skip_unversioned: false) + def outdated_versions(greedy: false, greedy_latest: false, greedy_auto_updates: false) # special case: tap version is not available return [] if version.nil? - if greedy - return versions if version.latest? && !skip_unversioned + if greedy || greedy_latest && greedy_auto_updates + return versions if version.latest? + elsif greedy_auto_updates && auto_updates + return versions if version.latest? + elsif greedy_latest && version.latest? + return versions elsif auto_updates return [] end @@ -137,10 +141,10 @@ module Cask installed.reject { |v| v == version } end - def outdated_info(greedy, verbose, json, skip_unversioned) + def outdated_info(greedy, verbose, json, greedy_latest, greedy_auto_updates) return token if !verbose && !json - installed_versions = outdated_versions(greedy: greedy, skip_unversioned: skip_unversioned).join(", ") + installed_versions = outdated_versions(greedy: greedy, greedy_latest: greedy_latest, greedy_auto_updates: greedy_auto_updates).join(", ") if json { diff --git a/Library/Homebrew/cask/cmd/upgrade.rb b/Library/Homebrew/cask/cmd/upgrade.rb index 9c0d51de33..fe4cb07402 100644 --- a/Library/Homebrew/cask/cmd/upgrade.rb +++ b/Library/Homebrew/cask/cmd/upgrade.rb @@ -19,8 +19,11 @@ module Cask [:switch, "--greedy", { description: "Also include casks with `auto_updates true` or `version :latest`.", }], - [:switch, "--skip-unversioned", { - description: "Skip casks with `version :latest`.", + [:switch, "--greedy-latest", { + description: "Also include casks with `version :latest`.", + }], + [:switch, "--greedy-auto-updates", { + description: "Also include casks with `auto_updates true`.", }], ].freeze @@ -45,7 +48,8 @@ module Cask *casks, force: args.force?, greedy: args.greedy?, - skip_unversioned: args.skip_unversioned?, + greedy_latest: args.greedy_latest, + greedy_auto_updates: args.greedy_auto_updates, dry_run: args.dry_run?, binaries: args.binaries?, quarantine: args.quarantine?, @@ -62,7 +66,8 @@ module Cask args: Homebrew::CLI::Args, force: T.nilable(T::Boolean), greedy: T.nilable(T::Boolean), - skip_unversioned: T.nilable(T::Boolean), + greedy_latest: T.nilable(T::Boolean), + greedy_auto_updates: T.nilabel(T::Boolean), dry_run: T.nilable(T::Boolean), skip_cask_deps: T.nilable(T::Boolean), verbose: T.nilable(T::Boolean), @@ -76,7 +81,8 @@ module Cask args:, force: false, greedy: false, - skip_unversioned: false, + greedy_latest: false, + greedy_auto_updates: false, dry_run: false, skip_cask_deps: false, verbose: false, @@ -89,7 +95,7 @@ module Cask outdated_casks = if casks.empty? Caskroom.casks(config: Config.from_args(args)).select do |cask| - cask.outdated?(greedy: greedy, skip_unversioned: args.skip_unversioned?) + cask.outdated?(greedy: greedy, greedy_latest: args.greedy_latest?, greedy_auto_updates: args.greedy_auto_updates?) end else casks.select do |cask| diff --git a/Library/Homebrew/cmd/outdated.rb b/Library/Homebrew/cmd/outdated.rb index 20c6552ff1..6cac0f08a6 100644 --- a/Library/Homebrew/cmd/outdated.rb +++ b/Library/Homebrew/cmd/outdated.rb @@ -38,8 +38,11 @@ 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`." + switch "--greedy-latest", + description: "Print outdated casks including those with `version :latest`." + + switch "--greedy-auto-updates", + description: "Print outdated casks including those with `auto_updates`." conflicts "--quiet", "--verbose", "--json" conflicts "--formula", "--cask" @@ -119,7 +122,7 @@ module Homebrew else c = formula_or_cask - puts c.outdated_info(args.greedy?, verbose?, false, args.skip_unversioned?) + puts c.outdated_info(args.greedy?, verbose?, false, args.greedy_latest?, args.greedy_auto_updates?) end end end @@ -194,7 +197,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?, skip_unversioned: args.skip_unversioned?) + formula_or_cask.outdated?(greedy: args.greedy?, greedy_latest: args.greedy_latest?, greedy_auto_updates: args.greedy_auto_updates?) end end end