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 Cmd
|
||||||
class Reinstall < Install
|
class Reinstall < Install
|
||||||
def run
|
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|
|
casks.each do |cask|
|
||||||
Installer.new(cask, binaries: binaries?,
|
Installer.new(cask,
|
||||||
verbose: verbose?,
|
binaries: binaries,
|
||||||
force: force?,
|
verbose: verbose,
|
||||||
skip_cask_deps: skip_cask_deps?,
|
force: force,
|
||||||
require_sha: require_sha?,
|
skip_cask_deps: skip_cask_deps,
|
||||||
quarantine: quarantine?).reinstall
|
require_sha: require_sha,
|
||||||
|
quarantine: quarantine).reinstall
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -11,17 +11,31 @@ module Cask
|
|||||||
end
|
end
|
||||||
|
|
||||||
def run
|
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|
|
casks.each do |cask|
|
||||||
odebug "Uninstalling Cask #{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?
|
if cask.installed? && !cask.installed_caskfile.nil?
|
||||||
# use the same cask file that was used for installation, if possible
|
# use the same cask file that was used for installation, if possible
|
||||||
cask = CaskLoader.load(cask.installed_caskfile) if cask.installed_caskfile.exist?
|
cask = CaskLoader.load(cask.installed_caskfile) if cask.installed_caskfile.exist?
|
||||||
end
|
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?
|
next if (versions = cask.versions).empty?
|
||||||
|
|
||||||
|
|||||||
@ -33,12 +33,23 @@ module Cask
|
|||||||
|
|
||||||
def self.upgrade_casks(
|
def self.upgrade_casks(
|
||||||
*casks,
|
*casks,
|
||||||
force: false, greedy: false, dry_run: false, binaries: true, skip_cask_deps: false, verbose: false,
|
force: nil,
|
||||||
quarantine: nil, require_sha: 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`.
|
# 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?
|
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?
|
outdated_casks = if casks.empty?
|
||||||
Caskroom.casks.select do |cask|
|
Caskroom.casks.select do |cask|
|
||||||
|
|||||||
@ -78,9 +78,14 @@ module Homebrew
|
|||||||
|
|
||||||
return if casks.blank?
|
return if casks.blank?
|
||||||
|
|
||||||
reinstall_cmd = Cask::Cmd::Reinstall.new(casks)
|
Cask::Cmd::Reinstall.reinstall_casks(
|
||||||
reinstall_cmd.verbose = args.verbose?
|
*casks,
|
||||||
reinstall_cmd.force = args.force?
|
binaries: args.binaries?,
|
||||||
reinstall_cmd.run
|
verbose: args.verbose?,
|
||||||
|
force: args.force?,
|
||||||
|
require_sha: args.require_sha?,
|
||||||
|
skip_cask_deps: args.skip_cask_deps?,
|
||||||
|
quarantine: args.quarantine?,
|
||||||
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -127,10 +127,12 @@ module Homebrew
|
|||||||
|
|
||||||
return if casks.blank?
|
return if casks.blank?
|
||||||
|
|
||||||
cask_uninstall = Cask::Cmd::Uninstall.new(casks)
|
Cask::Cmd::Uninstall.uninstall_casks(
|
||||||
cask_uninstall.force = args.force?
|
*casks,
|
||||||
cask_uninstall.verbose = args.verbose?
|
binaries: args.binaries?,
|
||||||
cask_uninstall.run
|
verbose: args.verbose?,
|
||||||
|
force: args.force?,
|
||||||
|
)
|
||||||
rescue MultipleVersionsInstalledError => e
|
rescue MultipleVersionsInstalledError => e
|
||||||
ofail e
|
ofail e
|
||||||
puts "Run `brew uninstall --force #{e.name}` to remove all versions."
|
puts "Run `brew uninstall --force #{e.name}` to remove all versions."
|
||||||
|
|||||||
@ -323,6 +323,27 @@ module Homebrew
|
|||||||
Shellwords.shellsplit(ENV.fetch("HOMEBREW_CASK_OPTS", ""))
|
Shellwords.shellsplit(ENV.fetch("HOMEBREW_CASK_OPTS", ""))
|
||||||
end
|
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?
|
def cask_opts_quarantine?
|
||||||
cask_opts.reverse_each do |opt|
|
cask_opts.reverse_each do |opt|
|
||||||
return true if opt == "--quarantine"
|
return true if opt == "--quarantine"
|
||||||
@ -335,5 +356,13 @@ module Homebrew
|
|||||||
def cask_opts_require_sha?
|
def cask_opts_require_sha?
|
||||||
cask_opts.include?("--require-sha")
|
cask_opts.include?("--require-sha")
|
||||||
end
|
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
|
||||||
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`.
|
*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`:
|
* `HOMEBREW_CLEANUP_MAX_AGE_DAYS`:
|
||||||
Cleanup all cached files older than this many 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\.
|
\fIDefault:\fR macOS: \fB$HOME/Library/Caches/Homebrew\fR, Linux: \fB$XDG_CACHE_HOME/Homebrew\fR or \fB$HOME/\.cache/Homebrew\fR\.
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
|
\fBHOMEBREW_CASK_OPTS\fR
|
||||||
|
Options which should be used for all \fBcask\fR commands\.
|
||||||
|
.
|
||||||
|
.TP
|
||||||
\fBHOMEBREW_CLEANUP_MAX_AGE_DAYS\fR
|
\fBHOMEBREW_CLEANUP_MAX_AGE_DAYS\fR
|
||||||
Cleanup all cached files older than this many days\.
|
Cleanup all cached files older than this many days\.
|
||||||
.
|
.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user