Split into two flags --greedy-latest and --greedy-auto-updates

This commit is contained in:
Bevan Kay 2021-07-01 23:01:22 +10:00
parent 72e3704827
commit b1c70160f3
No known key found for this signature in database
GPG Key ID: 479C98436A4773B9
3 changed files with 30 additions and 17 deletions

View File

@ -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
{

View File

@ -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|

View File

@ -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