class CabbageDoc::Task

Attributes

confirm[RW]
customize[RW]
generators[RW]
name[RW]
tags[RW]

Public Class Methods

define() { |instance| ... } click to toggle source
# File lib/cabbage_doc/task.rb, line 8
def self.define
  new.tap do |instance|
    yield instance if block_given?
    instance.validate!
    instance.sort!
    instance.define!
  end
end
new() click to toggle source
# File lib/cabbage_doc/task.rb, line 17
def initialize
  self.generators = config.generators.dup
  self.tags = config.tags.dup
  self.name = :cabbagedoc
  self.customize = true
  self.confirm = config.confirm
end

Public Instance Methods

config() click to toggle source
# File lib/cabbage_doc/task.rb, line 25
def config
  @_config ||= Configuration.instance
end
define!() click to toggle source
# File lib/cabbage_doc/task.rb, line 33
def define!
  namespace name do
    define_generators!
    define_customizer!
  end

  desc "Run all generators"
  task name => :environment do
    generators.each do |type|
      Generator.perform(type)
    end
  end
end
sort!() click to toggle source
# File lib/cabbage_doc/task.rb, line 29
def sort!
  generators.sort! { |generator| Generator::PRIORITIES.index(Generator.all[generator].priority) }
end
validate!() click to toggle source
# File lib/cabbage_doc/task.rb, line 47
def validate!
  fail "Invalid 'name'" unless name.is_a?(Symbol)
  fail "No 'generators' configured" unless generators.any?

  generators.each do |generator|
    fail "Invalid 'generator' #{generator}" unless Generator.exists?(generator)
  end
end

Private Instance Methods

define_customizer!() click to toggle source
# File lib/cabbage_doc/task.rb, line 84
def define_customizer!
  return unless customize

  desc "Customize Web UI"
  task :customize => :environment do
    Customizer.new.perform
  end
end
define_generators!() click to toggle source
# File lib/cabbage_doc/task.rb, line 58
def define_generators!
  generators.each do |type|
    desc "Generate #{type}"
    task type => :environment do
      Generator.perform(type) if confirm.call(:all)
    end

    define_generators_by_tag!(type)
    define_customizer!
  end
end
define_generators_by_tag!(type) click to toggle source
# File lib/cabbage_doc/task.rb, line 70
def define_generators_by_tag!(type)
  return unless Generator.supports?(type, :tags)
  return unless tags.size > 1

  namespace type do
    tags.each do |tag|
      desc "Generate #{type} for #{tag}"
      task tag => :environment do
        Generator.perform(type, tag) if confirm.call(tag)
      end
    end
  end
end