Sha256: e3824660a9b250d981d3c387aa2d0a0e18ee8c0ab8a065e358d1f7bca8352524

Contents?: true

Size: 1.38 KB

Versions: 5

Compression:

Stored size: 1.38 KB

Contents

require 'rake'
require 'rake/tasklib'

module CabbageDoc
  class Task < Rake::TaskLib
    attr_accessor :processors, :name

    def self.define
      new.tap do |instance|
        yield instance if block_given?
        instance.validate!
        instance.sort!
        instance.define!
      end
    end

    def initialize
      @processors = [:documentation]
      @name = :cabbagedoc
    end

    def sort!
      processors.sort! { |processor| Processor::PRIORITIES.index(Processor.all[processor].priority) }
    end

    def define!
      namespace name do
        processors.each do |processor|
          desc "Process #{processor}"
          namespace :process do
            task processor.to_s => :environment do
              Processor.all[processor].new.perform
            end
          end
        end

        desc "Customize Web UI"
        task :customize => :environment do
          Customizer.new.perform
        end
      end

      desc "Run all processors"
      task name => :environment do
        processors.each do |name|
          Processor.all[name].new.perform
        end
      end
    end

    def validate!
      fail "Invalid 'name'" unless name.is_a?(Symbol)
      fail "No 'processors' configured" unless processors.any?

      processors.each do |processor|
        fail "Invalid 'processor' #{processor}" unless Processor.all.has_key?(processor)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cabbage_doc-0.0.7 lib/cabbage_doc/task.rb
cabbage_doc-0.0.6 lib/cabbage_doc/task.rb
cabbage_doc-0.0.5 lib/cabbage_doc/task.rb
cabbage_doc-0.0.4 lib/cabbage_doc/task.rb
cabbage_doc-0.0.3 lib/cabbage_doc/task.rb