Sha256: e52b80beb9d10f60632ee9915982248fce984c747b03bf8d1090d6e667fdbd9b

Contents?: true

Size: 1.61 KB

Versions: 1

Compression:

Stored size: 1.61 KB

Contents

require 'rake'
require 'rake/tasklib'

module Barista
  class RakeTask < ::Rake::TaskLib
    include Rake::DSL

    attr_writer :namespace, :task_name
    attr_writer :environment, :input_directory, :output_directory, :rails

    def initialize
      yield self if block_given?
      @namespace ||= :barista
      @task_name ||= :brew
      @task_name = @task_name.to_sym
      @rails     = defined?(Rails) if @rails.nil?

      task_declaration = (@rails ? {@task_name => :environment} : @task_name)

      namespace @namespace do
        desc "Compiles all CoffeeScript sources to JavaScript"
        task task_declaration do
          setup_barista
          check_availability
          puts "Compiling all CoffeeScripts to their JavaScript equivalent."
          Barista.compile_all! true, false
        end
      end
    end

    # Proxy methods for rake tasks

    def respond_to?(method, include_private = false)
      super || Barista.respond_to?(method, include_private)
    end

    def method_missing(method, *args, &blk)
      if Barista.respond_to?(method)
        Barista.send method, *args, &blk
      else
        super
      end
    end

    private

    def setup_barista
      require 'barista'

      Barista.env = @environment if @environment
      if @input_directory
        Barista.root = File.expand_path(@input_directory, Dir.pwd)
      end
      if @output_directory
        Barista.output_root = File.expand_path(@output_directory, Dir.pwd)
      end
    end

    def check_availability
      unless Barista::Compiler.available?
        warn Barista::Compiler::UNAVAILABLE_MESSAGE
        exit 1
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
barista-1.3.0 lib/barista/rake_task.rb