From 367fdb971839c0b3686ca23a6de76da75cc80580 Mon Sep 17 00:00:00 2001 From: Joshua McKinney Date: Sat, 18 Mar 2017 17:48:20 -0500 Subject: [PATCH] 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. --- .../Homebrew/cask/lib/hbc/cli/reinstall.rb | 29 ++++--------------- Library/Homebrew/cask/lib/hbc/installer.rb | 19 ++++++++++-- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/Library/Homebrew/cask/lib/hbc/cli/reinstall.rb b/Library/Homebrew/cask/lib/hbc/cli/reinstall.rb index b52c433282..c27fa9f2fd 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/reinstall.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/reinstall.rb @@ -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 diff --git a/Library/Homebrew/cask/lib/hbc/installer.rb b/Library/Homebrew/cask/lib/hbc/installer.rb index 824c1b1beb..6f6957574a 100644 --- a/Library/Homebrew/cask/lib/hbc/installer.rb +++ b/Library/Homebrew/cask/lib/hbc/installer.rb @@ -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?