class KnifeCookbookDoc::RakeTask

Attributes

name[RW]
options[RW]

Public Class Methods

new(name = :knife_cookbook_doc) { |self| ... } click to toggle source
# File lib/knife_cookbook_doc/rake_task.rb, line 19
def initialize(name = :knife_cookbook_doc)
  @name = name
  @options = {}
  yield self if block_given?
  define
end

Public Instance Methods

define() click to toggle source
# File lib/knife_cookbook_doc/rake_task.rb, line 26
def define
  last_description = ::Rake::Version::MAJOR.to_i < 12 ? ::Rake.application.last_comment : ::Rake.application.last_description
  desc 'Generate cookbook documentation' unless last_description
  task(name) do
    merged_options = default_options.merge(options)
    cookbook_dir = File.realpath(merged_options[:cookbook_dir])
    model = ReadmeModel.new(cookbook_dir, merged_options)
    template = File.read(merged_options[:template_file])
    eruby = Erubis::Eruby.new(template)
    result = eruby.result(model.get_binding)

    File.open("#{cookbook_dir}/#{merged_options[:output_file]}", 'wb') do |f|
      result.each_line do |line|
        f.write line.gsub(/[ \t\r\n]*$/,'')
        f.write "\n"
      end
    end
  end
end

Private Instance Methods

default_options() click to toggle source
# File lib/knife_cookbook_doc/rake_task.rb, line 47
def default_options
  {
    cookbook_dir: './',
    constraints: true,
    output_file: 'README.md',
    template_file: Pathname.new("#{File.dirname(__FILE__)}/../chef/knife/README.md.erb").realpath
  }
end