Sha256: 3115e26bcd34fca728d6e96ce787b7c25130aa2b06990d9c12bc42a0dabfbfa6

Contents?: true

Size: 1.66 KB

Versions: 4

Compression:

Stored size: 1.66 KB

Contents

require 'chef/knife'
require 'pathname'

module KnifeCookbookDoc
  class CookbookDoc < Chef::Knife
    deps do
      require 'chef/cookbook/metadata'
      require 'erubis'
      require 'knife_cookbook_doc/readme_model'
      require 'knife_cookbook_doc/recipe_model'
      require 'knife_cookbook_doc/resource_model'
      require 'knife_cookbook_doc/attributes_model'
    end

    banner 'knife cookbook doc DIR (options)'

    option :constraints,
           :short       => '-c',
           :long        => '--constraints',
           :boolean     => true,
           :default     => true,
           :description => 'Include version constraints for platforms and dependencies'

    option :output_file,
           :short       => '-o',
           :long        => '--output-file FILE',
           :default     => 'README.md',
           :description => 'Set the output file to render to relative to cookbook dir. Defaults to README.md'

    option :template_file,
           :short       => '-t',
           :long        => '--template FILE',
           :default     => Pathname.new("#{File.dirname(__FILE__)}/README.md.erb").realpath,
           :description => 'Set template file used to render README.md'

    def run
      unless (cookbook_dir = name_args.first)
        ui.fatal 'Please provide cookbook directory as an argument'
        exit(1)
      end

      model = ReadmeModel.new(cookbook_dir, config[:constraints])

      template = File.read(config[:template_file])
      eruby = Erubis::Eruby.new(template)
      result = eruby.result(model.get_binding)

      File.open("#{cookbook_dir}/#{config[:output_file]}",'wb') do |f|
        f.write result
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
knife-cookbook-doc-0.8.0 lib/chef/knife/cookbook_doc.rb
knife-cookbook-doc-0.7.0 lib/chef/knife/cookbook_doc.rb
knife-cookbook-doc-0.6.0 lib/chef/knife/cookbook_doc.rb
knife-cookbook-doc-0.5.0 lib/chef/knife/cookbook_doc.rb