# =========================================================================== # SC::Target Buildtasks # copyright 2011, Strobe Inc. and Apple Inc. all rights reserved # ===========================================================================

# Tasks invoked while building Target objects. You can override these methods # in your buildfiles. You can also define new builders and assign them to # manifest entries if you also override/extend manifest:build. namespace :build do

desc "copies a single resource"
build_task :copy do |task, env|
  require 'fileutils'
  FileUtils.mkdir_p(File.dirname(env[:dst_path]))
  FileUtils.cp_r(env[:src_path], env[:dst_path])
end

desc "builds a single css files"
build_task :css do |task, env|
  SC::Builder::Stylesheet.build env[:entry], env[:dst_path]
end

desc "builds an image file"
build_task :image do |task, env|
  # by default, just copy images
  require 'fileutils'
  FileUtils.mkdir_p(File.dirname(env[:dst_path]))
  FileUtils.cp_r(env[:src_path], env[:dst_path])
end

desc "converts a Handlebars file to JavaScript"
build_task :handlebars do |task, env|
  SC::Builder::Handlebars.build env[:entry], env[:dst_path]
end

desc "splits CSS files by rule count so IE doesn't crap out"
build_task :split_css do |task, env|
  SC::Builder::SplitCSS.build env[:entry], env[:dst_path]
end

desc "builds a single sass file"
build_task :sass do |task, env|
  SC::Builder::Sass.build env[:entry], env[:dst_path]
end

desc "builds a single scss (sass v3 syntax) file"
build_task :scss do |task, env|
  SC::Builder::Sass.build env[:entry], env[:dst_path], :scss
end

desc "builds a single less file"
build_task :less do |task, env|
  SC::Builder::Less.build env[:entry], env[:dst_path]
end

desc "builds a single javascript file"
build_task :javascript do |task, env|
  SC::Builder::JavaScript.build env[:entry], env[:dst_path]
end

desc "builds a single json file"
build_task :json do |task, env|
  SC::Builder::JSON.build env[:entry], env[:dst_path]
end

desc "builds an html file, possibly executing render tasks"
build_task :html do |task, env|
  SC::Builder::Html.build env[:entry], env[:dst_path]
end

desc "builds a strings file for use by server-side processing"
build_task :strings do |task, env|
  SC::Builder::Strings.build env[:entry], env[:dst_path]
end

desc "combines several source files into a single target, using the ordered_entries property if it exists"
build_task :combine do |task, env|
  SC::Builder::Combine.build env[:entry], env[:dst_path]
end

desc "adds all the css and image files in the target to chance and lets it run on a per-target basis"
build_task :chance do |task, env|
  SC::Builder::Chance.build env[:entry], env[:dst_path]
end

desc "extracts a file from the Chance entries"
build_task :chance_file do |task, env|
  SC::Builder::ChanceFile.build env[:entry], env[:dst_path]
end

desc "wraps the entry into a string for prefetched modules"
build_task :string_wrap do |task, env|
  SC::Builder::StringWrapper.build env[:entry], env[:dst_path]
end

namespace :minify do

  desc "Minifies a CSS file by invoking CSSmin"
  build_task :css do |task, env|
    SC::Builder::Minify.build env[:entry], env[:dst_path], :css
  end

  desc "minifies a JavaScript file by invoking the YUI compressor"
  build_task :javascript do |task, env|
    SC::Builder::Minify.build env[:entry], env[:dst_path], :javascript
  end

  desc "minifies a HTML file by invoking the HTML compressor"
  build_task :html do |task, env|
    SC::Builder::Minify.build env[:entry], env[:dst_path], :html
  end

  desc "minifies a Javascript file immediately by invoking the YUI compressor"
  build_task :inline_javascript do |task, env|
    SC::Builder::Minify.build env[:entry], env[:dst_path], :inline_javascript
  end
end

desc "builds a unit test"
build_task :test do |task, env|
  SC::Builder::Test.build env[:entry], env[:dst_path]
end

desc "builds the unit test index, describing the installed unit tests"
build_task :test_index do |task, env|
  SC::Builder::TestIndex.build env[:entry], env[:dst_path]
end

desc "builds the module_info.js file for a required framework"
build_task :module_info do |task, env|
  SC::Builder::ModuleInfo.build env[:entry], env[:dst_path]
end

end