mirror of
https://github.com/wavetermdev/homebrew-cask.git
synced 2026-08-05 13:43:24 -07:00
Merge pull request #2742 from rolandwalker/before_install
add `before_install` and `before_uninstall`
This commit is contained in:
@@ -7,6 +7,7 @@ require 'cask/artifact/hardlinked'
|
||||
require 'cask/artifact/app'
|
||||
require 'cask/artifact/binary'
|
||||
require 'cask/artifact/after_block'
|
||||
require 'cask/artifact/before_block'
|
||||
require 'cask/artifact/colorpicker'
|
||||
require 'cask/artifact/font'
|
||||
require 'cask/artifact/nested_container'
|
||||
@@ -27,6 +28,7 @@ module Cask::Artifact
|
||||
#
|
||||
def self.artifacts
|
||||
[
|
||||
Cask::Artifact::BeforeBlock,
|
||||
Cask::Artifact::NestedContainer,
|
||||
Cask::Artifact::App,
|
||||
Cask::Artifact::Colorpicker,
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
class Cask::Artifact::BeforeBlock < Cask::Artifact::Base
|
||||
def self.me?(cask)
|
||||
cask.artifacts[:before_install].any? ||
|
||||
cask.artifacts[:before_uninstall].any?
|
||||
end
|
||||
|
||||
def install
|
||||
@cask.artifacts[:before_install].each { |block| @cask.instance_eval &block }
|
||||
end
|
||||
|
||||
def uninstall
|
||||
@cask.artifacts[:before_uninstall].each { |block| @cask.instance_eval &block }
|
||||
end
|
||||
end
|
||||
+3
-1
@@ -98,7 +98,9 @@ module Cask::DSL
|
||||
|
||||
ARTIFACT_BLOCK_TYPES = [
|
||||
:after_install,
|
||||
:after_uninstall
|
||||
:after_uninstall,
|
||||
:before_install,
|
||||
:before_uninstall,
|
||||
]
|
||||
|
||||
ARTIFACT_BLOCK_TYPES.each do |type|
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
require 'test_helper'
|
||||
|
||||
describe Cask::Artifact::BeforeBlock do
|
||||
describe 'install' do
|
||||
it 'calls the specified block before installing' do
|
||||
called = false
|
||||
yielded_arg = nil
|
||||
|
||||
CaskWithBeforeInstall = Class.new(Cask)
|
||||
CaskWithBeforeInstall.class_eval do
|
||||
before_install do |c|
|
||||
called = true
|
||||
yielded_arg = c
|
||||
end
|
||||
end
|
||||
|
||||
cask = CaskWithBeforeInstall.new
|
||||
Cask::Artifact::BeforeBlock.new(cask).install
|
||||
|
||||
called.must_equal true
|
||||
yielded_arg.must_equal cask
|
||||
end
|
||||
end
|
||||
|
||||
describe 'uninstall' do
|
||||
it 'calls the specified block before uninstalling, passing the cask' do
|
||||
called = false
|
||||
yielded_arg = nil
|
||||
|
||||
CaskWithBeforeUninstall = Class.new(Cask)
|
||||
CaskWithBeforeUninstall.class_eval do
|
||||
before_uninstall do |c|
|
||||
called = true
|
||||
yielded_arg = c
|
||||
end
|
||||
end
|
||||
|
||||
cask = CaskWithBeforeUninstall.new
|
||||
Cask::Artifact::BeforeBlock.new(cask).uninstall
|
||||
|
||||
called.must_equal true
|
||||
yielded_arg.must_equal cask
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user