add before_install and before_uninstall

This commit is contained in:
Roland Walker
2014-02-06 08:32:12 -05:00
parent 320f8a46d8
commit 50864dc4b3
4 changed files with 64 additions and 1 deletions
+2
View File
@@ -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,
+14
View File
@@ -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
View File
@@ -89,7 +89,9 @@ module Cask::DSL
ARTIFACT_BLOCK_TYPES = [
:after_install,
:after_uninstall
:after_uninstall,
:before_install,
:before_uninstall,
]
ARTIFACT_BLOCK_TYPES.each do |type|
+45
View File
@@ -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