Add shared methods for uninstalling, reinstalling casks
This commit is contained in:
parent
b1ca2f7e3c
commit
907d4d7f74
@ -4,13 +4,42 @@ module Cask
|
||||
class Cmd
|
||||
class Reinstall < Install
|
||||
def run
|
||||
self.class.reinstall_casks(
|
||||
*casks,
|
||||
binaries: binaries?,
|
||||
verbose: verbose?,
|
||||
force: force?,
|
||||
skip_cask_deps: skip_cask_deps?,
|
||||
require_sha: require_sha?,
|
||||
quarantine: quarantine?,
|
||||
)
|
||||
end
|
||||
|
||||
def self.reinstall_casks(
|
||||
*casks,
|
||||
binaries: nil,
|
||||
verbose: nil,
|
||||
force: nil,
|
||||
skip_cask_deps: nil,
|
||||
require_sha: nil,
|
||||
quarantine: nil
|
||||
)
|
||||
# TODO: Handle this in `CLI::Parser`.
|
||||
binaries = Homebrew::EnvConfig.cask_opts_binaries? if binaries.nil?
|
||||
force = Homebrew::EnvConfig.cask_opts_force? if force.nil?
|
||||
quarantine = Homebrew::EnvConfig.cask_opts_quarantine? if quarantine.nil?
|
||||
require_sha = Homebrew::EnvConfig.cask_opts_require_sha? if require_sha.nil?
|
||||
skip_cask_deps = Homebrew::EnvConfig.cask_opts_skip_cask_deps? if skip_cask_deps.nil?
|
||||
verbose = Homebrew::EnvConfig.cask_opts_verbose? if verbose.nil?
|
||||
|
||||
casks.each do |cask|
|
||||
Installer.new(cask, binaries: binaries?,
|
||||
verbose: verbose?,
|
||||
force: force?,
|
||||
skip_cask_deps: skip_cask_deps?,
|
||||
require_sha: require_sha?,
|
||||
quarantine: quarantine?).reinstall
|
||||
Installer.new(cask,
|
||||
binaries: binaries,
|
||||
verbose: verbose,
|
||||
force: force,
|
||||
skip_cask_deps: skip_cask_deps,
|
||||
require_sha: require_sha,
|
||||
quarantine: quarantine).reinstall
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -11,17 +11,31 @@ module Cask
|
||||
end
|
||||
|
||||
def run
|
||||
self.class.uninstall_casks(
|
||||
*casks,
|
||||
binaries: binaries?,
|
||||
verbose: verbose?,
|
||||
force: force?
|
||||
)
|
||||
end
|
||||
|
||||
def self.uninstall_casks(*casks, binaries: nil, verbose: nil, force: nil)
|
||||
# TODO: Handle this in `CLI::Parser`.
|
||||
binaries = Homebrew::EnvConfig.cask_opts_binaries? if binaries.nil?
|
||||
force = Homebrew::EnvConfig.cask_opts_force? if force.nil?
|
||||
verbose = Homebrew::EnvConfig.cask_opts_verbose? if verbose.nil?
|
||||
|
||||
casks.each do |cask|
|
||||
odebug "Uninstalling Cask #{cask}"
|
||||
|
||||
raise CaskNotInstalledError, cask unless cask.installed? || force?
|
||||
raise CaskNotInstalledError, cask unless cask.installed? || force
|
||||
|
||||
if cask.installed? && !cask.installed_caskfile.nil?
|
||||
# use the same cask file that was used for installation, if possible
|
||||
cask = CaskLoader.load(cask.installed_caskfile) if cask.installed_caskfile.exist?
|
||||
end
|
||||
|
||||
Installer.new(cask, binaries: binaries?, verbose: verbose?, force: force?).uninstall
|
||||
Installer.new(cask, binaries: binaries, verbose: verbose, force: force).uninstall
|
||||
|
||||
next if (versions = cask.versions).empty?
|
||||
|
||||
|
||||
@ -33,12 +33,23 @@ module Cask
|
||||
|
||||
def self.upgrade_casks(
|
||||
*casks,
|
||||
force: false, greedy: false, dry_run: false, binaries: true, skip_cask_deps: false, verbose: false,
|
||||
quarantine: nil, require_sha: nil
|
||||
force: nil,
|
||||
greedy: nil,
|
||||
dry_run: nil,
|
||||
binaries: nil,
|
||||
skip_cask_deps: nil,
|
||||
verbose: nil,
|
||||
quarantine: nil,
|
||||
require_sha: nil
|
||||
)
|
||||
# TODO: Handle this in `CLI::Parser`.
|
||||
quarantine = Homebrew::EnvConfig.cask_opts_quarantine? if quarantine.nil?
|
||||
binaries = Homebrew::EnvConfig.cask_opts_binaries? if binaries.nil?
|
||||
dry_run = Homebrew::EnvConfig.cask_opts_dry_run? if dry_run.nil?
|
||||
force = Homebrew::EnvConfig.cask_opts_force? if force.nil?
|
||||
greedy = Homebrew::EnvConfig.cask_opts_greedy? if greedy.nil?
|
||||
quarantine = Homebrew::EnvConfig.cask_opts_quarantine? if quarantine.nil?
|
||||
require_sha = Homebrew::EnvConfig.cask_opts_require_sha? if require_sha.nil?
|
||||
verbose = Homebrew::EnvConfig.cask_opts_verbose? if verbose.nil?
|
||||
|
||||
outdated_casks = if casks.empty?
|
||||
Caskroom.casks.select do |cask|
|
||||
|
||||
@ -78,9 +78,14 @@ module Homebrew
|
||||
|
||||
return if casks.blank?
|
||||
|
||||
reinstall_cmd = Cask::Cmd::Reinstall.new(casks)
|
||||
reinstall_cmd.verbose = args.verbose?
|
||||
reinstall_cmd.force = args.force?
|
||||
reinstall_cmd.run
|
||||
Cask::Cmd::Reinstall.reinstall_casks(
|
||||
*casks,
|
||||
binaries: args.binaries?,
|
||||
verbose: args.verbose?,
|
||||
force: args.force?,
|
||||
require_sha: args.require_sha?,
|
||||
skip_cask_deps: args.skip_cask_deps?,
|
||||
quarantine: args.quarantine?,
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@ -127,10 +127,12 @@ module Homebrew
|
||||
|
||||
return if casks.blank?
|
||||
|
||||
cask_uninstall = Cask::Cmd::Uninstall.new(casks)
|
||||
cask_uninstall.force = args.force?
|
||||
cask_uninstall.verbose = args.verbose?
|
||||
cask_uninstall.run
|
||||
Cask::Cmd::Uninstall.uninstall_casks(
|
||||
*casks,
|
||||
binaries: args.binaries?,
|
||||
verbose: args.verbose?,
|
||||
force: args.force?,
|
||||
)
|
||||
rescue MultipleVersionsInstalledError => e
|
||||
ofail e
|
||||
puts "Run `brew uninstall --force #{e.name}` to remove all versions."
|
||||
|
||||
@ -323,6 +323,27 @@ module Homebrew
|
||||
Shellwords.shellsplit(ENV.fetch("HOMEBREW_CASK_OPTS", ""))
|
||||
end
|
||||
|
||||
def cask_opts_binaries?
|
||||
cask_opts.reverse_each do |opt|
|
||||
return true if opt == "--binaries"
|
||||
return false if opt == "--no-binaries"
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def cask_opts_dry_run?
|
||||
cask_opts.include?("--dry-run")
|
||||
end
|
||||
|
||||
def cask_opts_force?
|
||||
cask_opts.include?("--force")
|
||||
end
|
||||
|
||||
def cask_opts_greedy?
|
||||
cask_opts.include?("--greedy")
|
||||
end
|
||||
|
||||
def cask_opts_quarantine?
|
||||
cask_opts.reverse_each do |opt|
|
||||
return true if opt == "--quarantine"
|
||||
@ -335,5 +356,13 @@ module Homebrew
|
||||
def cask_opts_require_sha?
|
||||
cask_opts.include?("--require-sha")
|
||||
end
|
||||
|
||||
def cask_opts_skip_cask_deps?
|
||||
cask_opts.include?("--skip-cask-deps")
|
||||
end
|
||||
|
||||
def cask_opts_verbose?
|
||||
cask_opts.include?("--verbose")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1398,6 +1398,9 @@ Note that environment variables must have a value set to be detected. For exampl
|
||||
|
||||
*Default:* macOS: `$HOME/Library/Caches/Homebrew`, Linux: `$XDG_CACHE_HOME/Homebrew` or `$HOME/.cache/Homebrew`.
|
||||
|
||||
* `HOMEBREW_CASK_OPTS`:
|
||||
Options which should be used for all `cask` commands.
|
||||
|
||||
* `HOMEBREW_CLEANUP_MAX_AGE_DAYS`:
|
||||
Cleanup all cached files older than this many days.
|
||||
|
||||
|
||||
@ -1818,6 +1818,10 @@ Use the specified directory as the download cache\.
|
||||
\fIDefault:\fR macOS: \fB$HOME/Library/Caches/Homebrew\fR, Linux: \fB$XDG_CACHE_HOME/Homebrew\fR or \fB$HOME/\.cache/Homebrew\fR\.
|
||||
.
|
||||
.TP
|
||||
\fBHOMEBREW_CASK_OPTS\fR
|
||||
Options which should be used for all \fBcask\fR commands\.
|
||||
.
|
||||
.TP
|
||||
\fBHOMEBREW_CLEANUP_MAX_AGE_DAYS\fR
|
||||
Cleanup all cached files older than this many days\.
|
||||
.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user