Merge pull request #2362 from joshka/install-uninstall-messages

Install uninstall messages
This commit is contained in:
Markus Reiter 2017-04-23 02:40:52 +02:00 committed by GitHub
commit cb17a80577
5 changed files with 81 additions and 26 deletions

View File

@ -7,30 +7,10 @@ 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
count += 1
rescue CaskUnavailableError => e

View File

@ -24,6 +24,7 @@ module Hbc
@force = force
@skip_cask_deps = skip_cask_deps
@require_sha = require_sha
@reinstall = false
end
def self.print_caveats(cask)
@ -76,13 +77,16 @@ 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_existing_cask if @reinstall
oh1 "Installing Cask #{@cask}"
stage
install_artifacts
enable_accessibility_access
@ -90,6 +94,23 @@ module Hbc
puts summary
end
def reinstall
odebug "Hbc::Installer#reinstall"
@reinstall = true
install
end
def uninstall_existing_cask
return unless @cask.installed?
# use the same cask file that was used for installation, if possible
installed_caskfile = @cask.installed_caskfile
installed_cask = installed_caskfile.exist? ? CaskLoader.load_from_file(installed_caskfile) : @cask
# Always force uninstallation, ignore method parameter
Installer.new(installed_cask, force: true).uninstall
end
def summary
s = ""
s << "#{Emoji.install_badge} " if Emoji.enabled?
@ -305,7 +326,7 @@ module Hbc
end
def uninstall
odebug "Hbc::Installer#uninstall"
oh1 "Uninstalling Cask #{@cask}"
disable_accessibility_access
uninstall_artifacts
purge_versioned_files

View File

@ -1,4 +1,18 @@
describe Hbc::CLI::Install, :cask do
it "displays the installation progress" do
output = Regexp.new <<-EOS.undent
==> Downloading file:.*caffeine.zip
==> Verifying checksum for Cask local-caffeine
==> Installing Cask local-caffeine
==> Moving App 'Caffeine.app' to '.*Caffeine.app'.
.*local-caffeine was successfully installed!
EOS
expect {
Hbc::CLI::Install.run("local-caffeine")
}.to output(output).to_stdout
end
it "allows staging and activation of multiple Casks at once" do
shutup do
Hbc::CLI::Install.run("local-transmission", "local-caffeine")

View File

@ -1,4 +1,27 @@
describe Hbc::CLI::Reinstall, :cask do
it "displays the reinstallation progress" do
caffeine = Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb")
shutup do
Hbc::Installer.new(caffeine).install
end
output = Regexp.new <<-EOS.undent
==> Downloading file:.*caffeine.zip
Already downloaded: .*local-caffeine--1.2.3.zip
==> Verifying checksum for Cask local-caffeine
==> Uninstalling Cask local-caffeine
==> Removing App '.*Caffeine.app'.
==> Installing Cask local-caffeine
==> Moving App 'Caffeine.app' to '.*Caffeine.app'.
.*local-caffeine was successfully installed!
EOS
expect {
Hbc::CLI::Reinstall.run("local-caffeine")
}.to output(output).to_stdout
end
it "allows reinstalling a Cask" do
shutup do
Hbc::CLI::Install.run("local-transmission")

View File

@ -1,4 +1,21 @@
describe Hbc::CLI::Uninstall, :cask do
it "displays the uninstallation progress" do
caffeine = Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb")
shutup do
Hbc::Installer.new(caffeine).install
end
output = Regexp.new <<-EOS.undent
==> Uninstalling Cask local-caffeine
==> Removing App '.*Caffeine.app'.
EOS
expect {
Hbc::CLI::Uninstall.run("local-caffeine")
}.to output(output).to_stdout
end
it "shows an error when a bad Cask is provided" do
expect {
Hbc::CLI::Uninstall.run("notacask")