summaryrefslogtreecommitdiff
path: root/lib/chef/chef_fs/knife.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/chef_fs/knife.rb')
-rw-r--r--lib/chef/chef_fs/knife.rb27
1 files changed, 20 insertions, 7 deletions
diff --git a/lib/chef/chef_fs/knife.rb b/lib/chef/chef_fs/knife.rb
index fcdf4e93be..f68cec8971 100644
--- a/lib/chef/chef_fs/knife.rb
+++ b/lib/chef/chef_fs/knife.rb
@@ -16,17 +16,23 @@
# limitations under the License.
#
-require 'chef/chef_fs/file_system/chef_server_root_dir'
-require 'chef/chef_fs/file_system/chef_repository_file_system_root_dir'
-require 'chef/chef_fs/file_pattern'
-require 'chef/chef_fs/path_utils'
-require 'chef/chef_fs/parallelizer'
-require 'chef/config'
+require 'chef/knife'
class Chef
module ChefFS
class Knife < Chef::Knife
- def self.common_options
+ # Workaround for CHEF-3932
+ def self.deps
+ super do
+ require 'chef/chef_fs/file_system/chef_server_root_dir'
+ require 'chef/chef_fs/file_system/chef_repository_file_system_root_dir'
+ require 'chef/chef_fs/file_pattern'
+ require 'chef/chef_fs/path_utils'
+ require 'chef/chef_fs/parallelizer'
+ require 'chef/config'
+ yield
+ end
+
option :repo_mode,
:long => '--repo-mode MODE',
:description => "Specifies the local repository layout. Values: static, everything, hosted_everything. Default: everything/hosted_everything"
@@ -40,6 +46,13 @@ class Chef
:description => 'Maximum number of simultaneous requests to send (default: 10)'
end
+ def self.inherited(c)
+ super
+ # Ensure we always get to do our includes, whether subclass calls deps or not
+ c.deps do
+ end
+ end
+
def configure_chef
super
Chef::Config[:repo_mode] = config[:repo_mode] if config[:repo_mode]