Skip to content
Snippets Groups Projects
Commit 907d4d7f authored by William Ma's avatar William Ma
Browse files

Add shared methods for uninstalling, reinstalling casks

parent b1ca2f7e
No related branches found
No related tags found
No related merge requests found
......@@ -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\.
.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment