$: << 'lib'

require 'rake-pipeline-web-filters'
require 'travis/assets'
require 'compass'

assets ||= Travis::Assets.new
assets.setup_compass
assets.update_version

output 'public/scripts'
input assets.scripts do
  match '**/*.hbs' do
    handlebars :precompile => assets.production?
    concat 'templates.js'
  end

  match '**/*.coffee' do
    coffee_script
  end

  match 'vendor/**/*.js' do
    safe_concat assets.vendor_order, 'vendor.js'
  end

  match %r(^(?!vendor).*\.js$) do
    modules = proc { |input| input.path.gsub(%r((^app/|lib/|\.js$)), '') }
    minispade(string: assets.development?, rewrite_requires: true, module_id_generator: modules)
  end

  match '**/*.js' do
    concat ['vendor.js'], ['app.js', 'min/app.js']
  end

  if assets.production?
    match 'min/app.js' do
      strip_debug
      uglify squeeze: true
      concat 'app.min.js'
    end
  end
end

output 'public/styles'
input assets.styles do
  match '**/*.{scss,sass}' do
    sass
    concat [], 'app.css'
  end
end

output 'public/images'
input assets.images do
  skip %r(^ui/)
  match '**/*' do
    copy
  end
end

output 'public'
input assets.static do
  match '**/*' do
    copy
  end
end