Merge pull request #11629 from bevanjkay/upgrade_outdated_skipunversioned

adds an option to skip unversioned casks in outdated and upgrade command
This commit is contained in:
Mike McQuaid 2021-08-03 08:53:53 +01:00 committed by GitHub
commit b3dd9fb42f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 65 additions and 31 deletions

View File

@ -113,16 +113,19 @@ module Cask
@caskroom_path ||= Caskroom.path.join(token) @caskroom_path ||= Caskroom.path.join(token)
end end
def outdated?(greedy: false) def outdated?(greedy: false, greedy_latest: false, greedy_auto_updates: false)
!outdated_versions(greedy: greedy).empty? !outdated_versions(greedy: greedy, greedy_latest: greedy_latest,
greedy_auto_updates: greedy_auto_updates).empty?
end end
def outdated_versions(greedy: false) def outdated_versions(greedy: false, greedy_latest: false, greedy_auto_updates: false)
# special case: tap version is not available # special case: tap version is not available
return [] if version.nil? return [] if version.nil?
if greedy if greedy || (greedy_latest && greedy_auto_updates) || (greedy_auto_updates && auto_updates)
return versions if version.latest? return versions if version.latest?
elsif greedy_latest && version.latest?
return versions
elsif auto_updates elsif auto_updates
return [] return []
end end
@ -137,10 +140,11 @@ module Cask
installed.reject { |v| v == version } installed.reject { |v| v == version }
end end
def outdated_info(greedy, verbose, json) def outdated_info(greedy, verbose, json, greedy_latest, greedy_auto_updates)
return token if !verbose && !json return token if !verbose && !json
installed_versions = outdated_versions(greedy: greedy).join(", ") installed_versions = outdated_versions(greedy: greedy, greedy_latest: greedy_latest,
greedy_auto_updates: greedy_auto_updates).join(", ")
if json if json
{ {

View File

@ -19,6 +19,12 @@ module Cask
[:switch, "--greedy", { [:switch, "--greedy", {
description: "Also include casks with `auto_updates true` or `version :latest`.", description: "Also include casks with `auto_updates true` or `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 ].freeze
sig { returns(Homebrew::CLI::Parser) } sig { returns(Homebrew::CLI::Parser) }
@ -42,6 +48,8 @@ module Cask
*casks, *casks,
force: args.force?, force: args.force?,
greedy: args.greedy?, greedy: args.greedy?,
greedy_latest: args.greedy_latest?,
greedy_auto_updates: args.greedy_auto_updates?,
dry_run: args.dry_run?, dry_run: args.dry_run?,
binaries: args.binaries?, binaries: args.binaries?,
quarantine: args.quarantine?, quarantine: args.quarantine?,
@ -58,6 +66,8 @@ module Cask
args: Homebrew::CLI::Args, args: Homebrew::CLI::Args,
force: T.nilable(T::Boolean), force: T.nilable(T::Boolean),
greedy: T.nilable(T::Boolean), greedy: T.nilable(T::Boolean),
greedy_latest: T.nilable(T::Boolean),
greedy_auto_updates: T.nilable(T::Boolean),
dry_run: T.nilable(T::Boolean), dry_run: T.nilable(T::Boolean),
skip_cask_deps: T.nilable(T::Boolean), skip_cask_deps: T.nilable(T::Boolean),
verbose: T.nilable(T::Boolean), verbose: T.nilable(T::Boolean),
@ -71,6 +81,8 @@ module Cask
args:, args:,
force: false, force: false,
greedy: false, greedy: false,
greedy_latest: false,
greedy_auto_updates: false,
dry_run: false, dry_run: false,
skip_cask_deps: false, skip_cask_deps: false,
verbose: false, verbose: false,
@ -83,7 +95,8 @@ module Cask
outdated_casks = if casks.empty? outdated_casks = if casks.empty?
Caskroom.casks(config: Config.from_args(args)).select do |cask| Caskroom.casks(config: Config.from_args(args)).select do |cask|
cask.outdated?(greedy: greedy) cask.outdated?(greedy: greedy, greedy_latest: args.greedy_latest?,
greedy_auto_updates: args.greedy_auto_updates?)
end end
else else
casks.select do |cask| casks.select do |cask|
@ -107,7 +120,16 @@ module Cask
return false if outdated_casks.empty? return false if outdated_casks.empty?
if casks.empty? && !greedy if casks.empty? && !greedy
ohai "Casks with 'auto_updates' or 'version :latest' will not be upgraded; pass `--greedy` to upgrade them." if !args.greedy_auto_updates? && !args.greedy_latest?
ohai "Casks with 'auto_updates true' or 'version :latest'
will not be upgraded; pass `--greedy` to upgrade them."
end
if args.greedy_auto_updates? && !args.greedy_latest?
ohai "Casks with 'version :latest' will not be upgraded; pass `--greedy-latest` to upgrade them."
end
if !args.greedy_auto_updates? && args.greedy_latest?
ohai "Casks with 'auto_updates true' will not be upgraded; pass `--greedy-auto-updates` to upgrade them."
end
end end
verb = dry_run ? "Would upgrade" : "Upgrading" verb = dry_run ? "Would upgrade" : "Upgrading"

View File

@ -37,7 +37,13 @@ module Homebrew
"formula is outdated. Otherwise, the repository's HEAD will only be checked for "\ "formula is outdated. Otherwise, the repository's HEAD will only be checked for "\
"updates when a new stable or development version has been released." "updates when a new stable or development version has been released."
switch "--greedy", switch "--greedy",
description: "Print outdated casks with `auto_updates` or `version :latest`." description: "Print outdated casks with `auto_updates true` or `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 true`."
conflicts "--quiet", "--verbose", "--json" conflicts "--quiet", "--verbose", "--json"
conflicts "--formula", "--cask" conflicts "--formula", "--cask"
@ -119,7 +125,7 @@ module Homebrew
else else
c = formula_or_cask c = formula_or_cask
puts c.outdated_info(args.greedy?, verbose?, false) puts c.outdated_info(args.greedy?, verbose?, false, args.greedy_latest?, args.greedy_auto_updates?)
end end
end end
end end
@ -144,7 +150,8 @@ module Homebrew
else else
c = formula_or_cask c = formula_or_cask
c.outdated_info(args.greedy?, verbose?, true) c.outdated_info(args.greedy?, verbose?, true, greedy_latest: args.greedy_latest?,
greedy_auto_updates: args.greedy_auto_updates?)
end end
end end
end end
@ -194,7 +201,8 @@ module Homebrew
if formula_or_cask.is_a?(Formula) if formula_or_cask.is_a?(Formula)
formula_or_cask.outdated?(fetch_head: args.fetch_HEAD?) formula_or_cask.outdated?(fetch_head: args.fetch_HEAD?)
else else
formula_or_cask.outdated?(greedy: args.greedy?) formula_or_cask.outdated?(greedy: args.greedy?, greedy_latest: args.greedy_latest?,
greedy_auto_updates: args.greedy_auto_updates?)
end end
end end
end end