Sha256: 500e7e83cf4d6f614a84fbfe65789106127ec824fc4312f3c7ac61fdee084625

Contents?: true

Size: 796 Bytes

Versions: 1

Compression:

Stored size: 796 Bytes

Contents

require 'anvil/task/class_methods'
require 'anvil/task/naming'
require 'anvil/task/options'

module Anvil
  class Task
    extend ClassMethods
    extend Naming
    extend Options

    attr_reader :options

    def initialize(options = {})
      @options = options
    end

    def run
      if run_assures
        run_before_callbacks
        run_task
        run_after_callbacks
      end
    end

    protected

    def run_after_callbacks
      self.class.afters.each do |after|
        after[0].new(after[1]).run
      end
    end

    def run_assures
      self.class.assures.map { |a| a.new.assured? }.all?
    end

    def run_before_callbacks
      self.class.befores.each do |before|
        before[0].new(before[1]).run
      end
    end

    def run_task
      task
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
anvil-core-0.0.1.alpha.1 lib/anvil/task.rb