summaryrefslogtreecommitdiff
path: root/lib/chef/knife.rb
diff options
context:
space:
mode:
authorTeemu Matilainen <teemu.matilainen@iki.fi>2013-02-22 23:57:33 -0300
committerBryan McLellan <btm@opscode.com>2013-04-11 13:33:53 -0700
commitb1d50b3b86acf033f8ab8a479e4dea9fb0cd131a (patch)
tree098d665a86ccc5ecef519ec4454a2b86566d0a9a /lib/chef/knife.rb
parent12a344037de789623f71ae692b0f818fa6f677f9 (diff)
downloadchef-b1d50b3b86acf033f8ab8a479e4dea9fb0cd131a.tar.gz
[CHEF-3932] Support multiple calls of `Knife.deps`
If a Knife subcommand class were inheriting or including other classes with lazy loading dependencies, a later call to `Knife.deps` overwrote the earlier block. Fix it by collecting the blocks to an array.
Diffstat (limited to 'lib/chef/knife.rb')
-rw-r--r--lib/chef/knife.rb10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/chef/knife.rb b/lib/chef/knife.rb
index 7812fd232f..74507a4319 100644
--- a/lib/chef/knife.rb
+++ b/lib/chef/knife.rb
@@ -201,12 +201,18 @@ class Chef
subcommand_class || subcommand_not_found!(args)
end
+ def self.dependency_loaders
+ @dependency_loaders ||= []
+ end
+
def self.deps(&block)
- @dependency_loader = block
+ dependency_loaders << block
end
def self.load_deps
- @dependency_loader && @dependency_loader.call
+ dependency_loaders.each do |dep_loader|
+ dep_loader.call
+ end
end
private