$: << 'lib' require 'rake-pipeline-web-filters' require 'rake-pipeline/travis' require 'compass' ROOTS ||= [Pathname.new(File.expand_path('.'))] paths = %w(styles scripts images static vendor).inject({}) do |paths, type| paths.merge(type.to_sym => ROOTS.map { |root| root.join("assets/#{type}").to_s }) end Compass.configuration.images_path = paths[:images].first Compass.configuration.add_import_path paths[:styles].first Travis::Version.update output 'public/scripts' input paths[:scripts] do match '**/*.hbs' do travis_handlebars concat 'app/templates.js' end match '**/*.coffee' do coffee_script end match 'vendor/**/*.js' do precedence = %w(jquery.min minispade handlebars ember).map { |name| "vendor/#{name}.js" } safe_concat precedence, 'vendor.js' end match '**/*.js' do copy { |path| ["dev/#{path}", "min/#{path}"] } end match %r(^dev/(?!vendor).*\.js$) do modules = proc { |input| input.path.gsub(%r((^dev/|app/|lib/|\.js$)), '') } minispade(string: true, rewrite_requires: true, module_id_generator: modules) end match 'dev/**/*.js' do concat ['dev/vendor.js'], 'app.js' end match %r(^min/(?!vendor).*\.js$) do modules = proc { |input| input.path.gsub(%r((^min/|app/|lib/|\.js$)), '') } minispade(string: false, rewrite_requires: true, module_id_generator: modules) end match 'min/**/*.js' do concat ['min/vendor.js'], 'min/app.js' strip_debug uglify squeeze: true, max_line_length: 200 copy 'app.min.js' end end output 'public/styles' input paths[:styles] do match '**/*.{scss,sass}' do sass concat [], 'app.css' end end output 'public/images' input paths[:images] do skip %r(^ui/) match '**/*' do copy end end output 'public' input paths[:static] do match '**/*' do copy end end