diff --git a/lib/cask.rb b/lib/cask.rb index 56acd1af2..af6cdea59 100644 --- a/lib/cask.rb +++ b/lib/cask.rb @@ -65,10 +65,7 @@ class Cask end def installed? - return false unless destination_path.exist? - destination_path.entries.any? do |f| - f.basename.to_s =~ /.app$/ - end + destination_path.exist? end def to_s diff --git a/lib/cask/cli/uninstall.rb b/lib/cask/cli/uninstall.rb index b7711df1a..3ffb5f56d 100644 --- a/lib/cask/cli/uninstall.rb +++ b/lib/cask/cli/uninstall.rb @@ -1,12 +1,10 @@ class Cask::CLI::Uninstall def self.run(*cask_names) - cask_names.each do |cask_name| - begin - cask = Cask.load(cask_name) - Cask::Installer.uninstall(cask) - rescue CaskUnavailableError,CaskNotInstalledError => e - onoe e - end + begin + casks = cask_names.map { |cn| Cask.load(cn) } + Cask::Installer.uninstall(*casks) + rescue CaskUnavailableError,CaskNotInstalledError => e + onoe e end end diff --git a/lib/cask/installer.rb b/lib/cask/installer.rb index 609ee6c7a..8e843f737 100644 --- a/lib/cask/installer.rb +++ b/lib/cask/installer.rb @@ -14,12 +14,16 @@ class Cask::Installer ohai "Success! #{cask} installed to #{cask.destination_path}" end - def uninstall(cask) - raise CaskNotInstalledError.new(cask) unless cask.installed? + def uninstall(*casks) + casks.each do |cask| + raise CaskNotInstalledError.new(cask) unless cask.installed? + end require 'cmd/uninstall' ARGV.clear - ARGV << cask.title + casks.each do |cask| + ARGV << cask.title + end Homebrew.uninstall end diff --git a/test/cli/uninstall_test.rb b/test/cli/uninstall_test.rb index 1e21d7263..4a3dbf1a5 100644 --- a/test/cli/uninstall_test.rb +++ b/test/cli/uninstall_test.rb @@ -23,4 +23,21 @@ describe Cask::CLI::Uninstall do Cask::Installer.expects(:uninstall).with(fake_cask) Cask::CLI::Uninstall.run('fake-cask') end + + it "can uninstall multiple casks at once" do + caffeine = Cask.load('caffeine') + anvil = Cask.load('anvil') + + shutup do + Cask::Installer.install(caffeine) + Cask::Installer.install(anvil) + end + + shutup do + Cask::CLI::Uninstall.run('caffeine', 'anvil') + end + + caffeine.wont_be :installed? + anvil.wont_be :installed? + end end