Class: Soca::Plugins::CoffeeScript

Inherits:
Soca::Plugin show all
Defined in:
lib/soca/plugins/coffeescript.rb

Instance Attribute Summary

Attributes inherited from Soca::Plugin

#options, #pusher

Instance Method Summary collapse

Methods inherited from Soca::Plugin

#app_dir, #config, #initialize, #logger, name, plugins

Constructor Details

This class inherits a constructor from Soca::Plugin

Instance Method Details

#before_buildObject

Run the coffeescript plugin. Available options:

  • :files - Run these files through CoffeeScript. Can be an array of patterns or a single file. The default is '*.coffee'.
  • :vars - Additional variables to interpolate. By default the env and config are interpolated.


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/soca/plugins/coffeescript.rb', line 17

def before_build
  file_patterns = options[:files] || '**/*.coffee'
  files = Dir[*[file_patterns].flatten]
  vars = {
    :env => pusher.env,
    :config => pusher.config
  }.merge(options[:vars] || {})
  Soca.logger.debug "CoffeeScript vars: #{vars.inspect}"

  files.each do |file|
    Soca.logger.debug "Running #{file} through CoffeeScript."
    basename = File.basename(file)
    dir      = File.dirname(file)
    parts    = basename.split(/\./)
    new_file = (parts.length > 2 ? parts[0..-2].join('.') : parts[0]) + ".js"

    output_dir = options[:output_dir] || dir
    File.open(File.join(output_dir, new_file), 'w') do |f|
      f << ::CoffeeScript.compile(File.read(file), vars)
    end
    Soca.logger.debug "Wrote to #{new_file}"
  end
end