From 7c1bd961c69ac7301a6030ac08b309020303e1f3 Mon Sep 17 00:00:00 2001 From: hyuraku <32809703+hyuraku@users.noreply.github.com> Date: Thu, 2 Mar 2023 22:29:00 +0900 Subject: [PATCH 1/5] remove cask/cmd/zap and cask/cmd/zap_spec --- Library/Homebrew/cask/cmd.rb | 1 - Library/Homebrew/cask/cmd/zap.rb | 42 ---------------------- Library/Homebrew/test/cask/cmd/zap_spec.rb | 27 -------------- 3 files changed, 70 deletions(-) delete mode 100644 Library/Homebrew/cask/cmd/zap.rb delete mode 100644 Library/Homebrew/test/cask/cmd/zap_spec.rb diff --git a/Library/Homebrew/cask/cmd.rb b/Library/Homebrew/cask/cmd.rb index 7981202af0..ec3921fa5f 100644 --- a/Library/Homebrew/cask/cmd.rb +++ b/Library/Homebrew/cask/cmd.rb @@ -16,7 +16,6 @@ require "cask/cmd/install" require "cask/cmd/reinstall" require "cask/cmd/uninstall" require "cask/cmd/upgrade" -require "cask/cmd/zap" module Cask # Implementation of the `brew cask` command-line interface. diff --git a/Library/Homebrew/cask/cmd/zap.rb b/Library/Homebrew/cask/cmd/zap.rb deleted file mode 100644 index b06bfa4223..0000000000 --- a/Library/Homebrew/cask/cmd/zap.rb +++ /dev/null @@ -1,42 +0,0 @@ -# typed: false -# frozen_string_literal: true - -module Cask - class Cmd - # Cask implementation for the `brew uninstall` command. - # - # @api private - class Zap < AbstractCommand - extend T::Sig - - def self.parser - super do - switch "--force", - description: "Ignore errors when removing files." - end - end - - sig { void } - def run - self.class.zap_casks(*casks, verbose: args.verbose?, force: args.force?) - end - - sig { params(casks: Cask, force: T.nilable(T::Boolean), verbose: T.nilable(T::Boolean)).void } - def self.zap_casks( - *casks, - force: nil, - verbose: nil - ) - require "cask/installer" - - casks.each do |cask| - odebug "Zapping Cask #{cask}" - - raise CaskNotInstalledError, cask if !cask.installed? && !force - - Installer.new(cask, verbose: verbose, force: force).zap - end - end - end - end -end diff --git a/Library/Homebrew/test/cask/cmd/zap_spec.rb b/Library/Homebrew/test/cask/cmd/zap_spec.rb deleted file mode 100644 index 799efdf982..0000000000 --- a/Library/Homebrew/test/cask/cmd/zap_spec.rb +++ /dev/null @@ -1,27 +0,0 @@ -# typed: false -# frozen_string_literal: true - -describe Cask::Cmd::Zap, :cask do - it "shows an error when a bad Cask is provided" do - expect { described_class.run("notacask") } - .to raise_error(Cask::CaskUnavailableError, /is unavailable/) - end - - it "can zap and unlink multiple Casks at once" do - caffeine = Cask::CaskLoader.load(cask_path("local-caffeine")) - transmission = Cask::CaskLoader.load(cask_path("local-transmission")) - - Cask::Installer.new(caffeine).install - Cask::Installer.new(transmission).install - - expect(caffeine).to be_installed - expect(transmission).to be_installed - - described_class.run("local-caffeine", "local-transmission") - - expect(caffeine).not_to be_installed - expect(caffeine.config.appdir.join("Caffeine.app")).not_to be_a_symlink - expect(transmission).not_to be_installed - expect(transmission.config.appdir.join("Transmission.app")).not_to be_a_symlink - end -end From ed2c1d3716a2eb46ad8e90160666415b1de379f5 Mon Sep 17 00:00:00 2001 From: hyuraku <32809703+hyuraku@users.noreply.github.com> Date: Thu, 2 Mar 2023 22:29:57 +0900 Subject: [PATCH 2/5] repair cmd/uninstall with zap option --- Library/Homebrew/cmd/uninstall.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index 50a9abd5d1..9465360839 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -8,6 +8,8 @@ require "migrator" require "cli/parser" require "cask/cmd" require "cask/cask_loader" +require "cask/exceptions" +require "cask/installer" require "uninstall" module Homebrew @@ -66,11 +68,13 @@ module Homebrew ) if args.zap? - T.unsafe(Cask::Cmd::Zap).zap_casks( - *casks, - verbose: args.verbose?, - force: args.force?, - ) + casks.each do |cask| + odebug "Zapping Cask #{cask}" + + raise Cask::CaskNotInstalledError, cask if !cask.installed? && !args.force? + + Cask::Installer.new(cask, verbose: args.verbose?, force: args.force?).zap + end else T.unsafe(Cask::Cmd::Uninstall).uninstall_casks( *casks, From e0416e0f65dc0987cf53cd68bd2a0af8bec6be20 Mon Sep 17 00:00:00 2001 From: hyuraku <32809703+hyuraku@users.noreply.github.com> Date: Mon, 6 Mar 2023 21:26:02 +0900 Subject: [PATCH 3/5] add zap option spec to cask_installer spec --- Library/Homebrew/test/cask/installer_spec.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Library/Homebrew/test/cask/installer_spec.rb b/Library/Homebrew/test/cask/installer_spec.rb index 90dfddf437..545f6ac60a 100644 --- a/Library/Homebrew/test/cask/installer_spec.rb +++ b/Library/Homebrew/test/cask/installer_spec.rb @@ -251,6 +251,22 @@ describe Cask::Installer, :cask do expect(Cask::CaskLoader.load(path)).to be_installed end end + + context "add zap" do + let(:path) { cask_path("local-caffeine") } + + it "reinstall cask" do + caffeine = Cask::CaskLoader.load(path) + described_class.new(caffeine).install + + expect(caffeine).to be_installed + + described_class.new(caffeine).zap + + expect(caffeine).not_to be_installed + expect(caffeine.config.appdir.join("Caffeine.app")).not_to be_a_symlink + end + end end describe "uninstall" do From 122b24e9ff0a263776409116565caf761c368cf8 Mon Sep 17 00:00:00 2001 From: hyuraku <32809703+hyuraku@users.noreply.github.com> Date: Mon, 6 Mar 2023 21:41:41 +0900 Subject: [PATCH 4/5] repair zap spec --- Library/Homebrew/test/cask/installer_spec.rb | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/test/cask/installer_spec.rb b/Library/Homebrew/test/cask/installer_spec.rb index 545f6ac60a..ce5c43bf72 100644 --- a/Library/Homebrew/test/cask/installer_spec.rb +++ b/Library/Homebrew/test/cask/installer_spec.rb @@ -252,20 +252,16 @@ describe Cask::Installer, :cask do end end - context "add zap" do - let(:path) { cask_path("local-caffeine") } + it "zap method reinstall cask" do + caffeine = Cask::CaskLoader.load(cask_path("local-caffeine")) + described_class.new(caffeine).install - it "reinstall cask" do - caffeine = Cask::CaskLoader.load(path) - described_class.new(caffeine).install + expect(caffeine).to be_installed - expect(caffeine).to be_installed + described_class.new(caffeine).zap - described_class.new(caffeine).zap - - expect(caffeine).not_to be_installed - expect(caffeine.config.appdir.join("Caffeine.app")).not_to be_a_symlink - end + expect(caffeine).not_to be_installed + expect(caffeine.config.appdir.join("Caffeine.app")).not_to be_a_symlink end end From 4ab4dcdc824e9c54162b96d5b7a3f322e9a53c22 Mon Sep 17 00:00:00 2001 From: hyuraku <32809703+hyuraku@users.noreply.github.com> Date: Mon, 6 Mar 2023 22:29:52 +0900 Subject: [PATCH 5/5] repair spec style --- Library/Homebrew/test/extend/array_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/test/extend/array_spec.rb b/Library/Homebrew/test/extend/array_spec.rb index 6654b23a69..876cf90494 100644 --- a/Library/Homebrew/test/extend/array_spec.rb +++ b/Library/Homebrew/test/extend/array_spec.rb @@ -19,7 +19,7 @@ describe Array do it "converts an array to a sentence with a custom last word connector" do expect(["one", "two", "three"].to_sentence(last_word_connector: ", and also ")) - .to eq("one, two, and also three") + .to eq("one, two, and also three") expect(["one", "two", "three"].to_sentence(last_word_connector: " ")).to eq("one, two three") expect(["one", "two", "three"].to_sentence(last_word_connector: " and ")).to eq("one, two and three") end