forked from capistrano/capistrano
/
extensions.rb
41 lines (33 loc) · 951 Bytes
/
extensions.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
module Capistrano
class ExtensionProxy
def initialize(config, mod)
@config = config
extend(mod)
end
def method_missing(sym, *args, &block)
@config.send(sym, *args, &block)
end
end
EXTENSIONS = {}
def self.plugin(name, mod)
return false if EXTENSIONS.has_key?(name)
Capistrano::Configuration.class_eval <<-STR, __FILE__, __LINE__+1
def #{name}
@__#{name}_proxy ||= Capistrano::ExtensionProxy.new(self, Capistrano::EXTENSIONS[#{name.inspect}])
end
STR
EXTENSIONS[name] = mod
return true
end
def self.remove_plugin(name)
if EXTENSIONS.delete(name)
Capistrano::Configuration.send(:remove_method, name)
return true
end
return false
end
def self.configuration(*args)
warn "[DEPRECATION] Capistrano.configuration is deprecated. Use Capistrano::Configuration.instance instead"
Capistrano::Configuration.instance(*args)
end
end