lib/chef-cli/command/generator_commands/chef_exts/recipe_dsl_ext.rb



#
# Copyright:: Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

require "chef/dsl/recipe"

module ChefCLI

  # Methods here are mixed in to the Chef recipe DSL to provide extra
  # functionality for generator cookbooks.
  module RecipeDSLExt

    # Replaces the current formatter (by default this is the `doc` formatter)
    # with the null formatter, thus suppressing normal Chef output.
    def silence_chef_formatter
      old = run_context.events.subscribers.first
      out, err = old.output.out, old.output.err
      run_context.events.subscribers.clear
      null_formatter = Chef::Formatters.new(:null, out, err)
      run_context.events.register(null_formatter)
    end

  end
end

Chef::DSL::Recipe.send(:include, ChefCLI::RecipeDSLExt)