Refactor brew cask reinstall
The implementation of the reinstall command was the same as Installer#install, aside from the uninstall of the existing cask. Moved this within the class to DRY up the implementation.
This commit is contained in:
parent
76955b47bd
commit
367fdb9718
@ -7,30 +7,11 @@ module Hbc
|
||||
begin
|
||||
cask = CaskLoader.load(cask_token)
|
||||
|
||||
installer = Installer.new(cask,
|
||||
force: force,
|
||||
skip_cask_deps: skip_cask_deps,
|
||||
require_sha: require_sha)
|
||||
installer.print_caveats
|
||||
installer.fetch
|
||||
|
||||
if cask.installed?
|
||||
# use copy of cask for uninstallation to avoid 'No such file or directory' bug
|
||||
installed_cask = cask
|
||||
|
||||
# use the same cask file that was used for installation, if possible
|
||||
if (installed_caskfile = installed_cask.installed_caskfile).exist?
|
||||
installed_cask = CaskLoader.load_from_file(installed_caskfile)
|
||||
end
|
||||
|
||||
# Always force uninstallation, ignore method parameter
|
||||
Installer.new(installed_cask, force: true).uninstall
|
||||
end
|
||||
|
||||
installer.stage
|
||||
installer.install_artifacts
|
||||
installer.enable_accessibility_access
|
||||
puts installer.summary
|
||||
Installer.new(cask,
|
||||
force: force,
|
||||
skip_cask_deps: skip_cask_deps,
|
||||
require_sha: require_sha,
|
||||
reinstall: true).install
|
||||
|
||||
count += 1
|
||||
rescue CaskUnavailableError => e
|
||||
|
||||
@ -18,12 +18,13 @@ module Hbc
|
||||
|
||||
PERSISTENT_METADATA_SUBDIRS = ["gpg"].freeze
|
||||
|
||||
def initialize(cask, command: SystemCommand, force: false, skip_cask_deps: false, require_sha: false)
|
||||
def initialize(cask, command: SystemCommand, force: false, skip_cask_deps: false, require_sha: false, reinstall: false)
|
||||
@cask = cask
|
||||
@command = command
|
||||
@force = force
|
||||
@skip_cask_deps = skip_cask_deps
|
||||
@require_sha = require_sha
|
||||
@reinstall = reinstall
|
||||
end
|
||||
|
||||
def self.print_caveats(cask)
|
||||
@ -76,13 +77,14 @@ module Hbc
|
||||
def install
|
||||
odebug "Hbc::Installer#install"
|
||||
|
||||
if @cask.installed? && !force
|
||||
if @cask.installed? && !force && !@reinstall
|
||||
raise CaskAlreadyInstalledAutoUpdatesError, @cask if @cask.auto_updates
|
||||
raise CaskAlreadyInstalledError, @cask
|
||||
end
|
||||
|
||||
print_caveats
|
||||
fetch
|
||||
uninstall_if_neccessary
|
||||
stage
|
||||
install_artifacts
|
||||
enable_accessibility_access
|
||||
@ -90,6 +92,19 @@ module Hbc
|
||||
puts summary
|
||||
end
|
||||
|
||||
def uninstall_if_neccessary
|
||||
return unless @cask.installed? && @reinstall
|
||||
installed_cask = @cask
|
||||
|
||||
# use the same cask file that was used for installation, if possible
|
||||
if (installed_caskfile = installed_cask.installed_caskfile).exist?
|
||||
installed_cask = CaskLoader.load_from_file(installed_caskfile)
|
||||
end
|
||||
|
||||
# Always force uninstallation, ignore method parameter
|
||||
Installer.new(installed_cask, force: true).uninstall
|
||||
end
|
||||
|
||||
def summary
|
||||
s = ""
|
||||
s << "#{Emoji.install_badge} " if Emoji.enabled?
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user