Commit 3e1ac2aa authored by Douglas Neiner's avatar Douglas Neiner Committed by wycats

Updated Rakefile to mirror the functionality of the Makefile

The Rakefile now supports all the functionality of the Makefile
including only rebuilding files when dependent files change.

To see availible tasks, run:

    rake -T
parent ef8df7f5
# Basic Rakefile for building jQuery prefix = File.dirname( __FILE__ )
files = [ "intro", "core", "support", "data", "queue", "event", "selector", "traversing", "attributes", "manipulation", "css", "ajax", "effects", "offset", "dimensions", "outro" ]
date = `git log -1 | grep Date: | sed 's/[^:]*: *//'`.gsub(/\n/, "") # Directory variables
version = `cat version.txt`.gsub(/\n/, "") src_dir = File.join( prefix, 'src' )
build_dir = File.join( prefix, 'build' )
test_dir = File.join( prefix, 'test' )
task :default => :jquery # A different destination directory can be set by
# setting DIST_DIR before calling rake
dist_dir = ENV['DIST_DIR'] || File.join( prefix, 'dist' )
task :init do base_files = %w{intro core support data queue attributes event selector traversing manipulation css ajax effects offset dimensions outro}.map { |js| File.join( src_dir, "#{js}.js" ) }
sh "if test ! -d test/qunit; then git clone git://github.com/jquery/qunit.git test/qunit; fi"
sh "if test ! -d src/sizzle; then git clone git://github.com/jeresig/sizzle.git src/sizzle; fi" # Sizzle, QUnit and jQuery files/dirs
sh "cd src/sizzle && git pull origin master &> /dev/null" sizzle_dir = File.join( src_dir, "sizzle" )
sh "cd test/qunit && git pull origin master &> /dev/null" sizzle = File.join( sizzle_dir, "sizzle.js" )
selector = File.join( src_dir, "selector.js" )
qunit_dir = File.join( test_dir, "qunit" )
qunit = File.join( qunit_dir, "qunit", "qunit.js" )
jq = File.join( dist_dir, "jquery.js" )
jq_min = File.join( dist_dir, "jquery.min.js" )
# General Variables
date = `git log -1 | grep Date: | sed 's/[^:]*: *//'`.strip
version = File.read( File.join( prefix, 'version.txt' ) ).strip
# Build tools
rhino = "java -jar #{build_dir}/js.jar"
minfier = "java -jar #{build_dir}/google-compiler-20091218.jar"
# Turn off output other than needed from `sh` and file commands
verbose(false)
# Tasks
task :default => "jquery"
desc "Builds jQuery; Tests with JSLint; Minifies jQuery"
task :all => [:jquery, :lint, :min] do
puts "jQuery build complete."
end
desc "Builds jQuery: jquery.js (Default task)"
task :jquery => [:selector, jq]
desc "Builds a minified version of jQuery: jquery.min.js"
task :min => jq_min
task :init => [sizzle, qunit] do
puts "Updating SizzleJS with latest..."
sh "cd #{sizzle_dir} && git pull origin master &> /dev/null"
puts "Updating QUnit with latest..."
sh "cd #{qunit_dir} && git pull origin master &> /dev/null"
end end
task :jquery => [:init, :selector] do desc "Removes dist folder, selector.js, and Sizzle/QUnit"
sh "mkdir -p dist" task :clean do
puts "Removing Distribution directory: #{dist_dir}..."
rm_r dist_dir
puts "Removing built copy of Sizzle..."
rm_r selector
puts "Removing cloned directories..."
rm_r qunit_dir
rm_r sizzle_dir
end
desc "Rebuilds selector.js from SizzleJS"
task :selector => [:init, selector]
desc "Tests built jquery.js against JSLint"
task :lint => jq do
puts "Checking jQuery against JSLint..."
sh "#{rhino} #{build_dir}/jslint-check.js"
end
# File and Directory Dependencies
directory dist_dir
file jq => [dist_dir, base_files].flatten do
puts "Building jquery.js..."
sh "cat #{base_files.join(' ')} | sed 's/Date:./&#{date}/' | sed s/@VERSION/#{version}/ > #{jq}"
end
file jq_min => jq do
puts "Building jquery.min.js..."
sh "head -15 #{jq} > #{jq_min}"
sh "#{minfier} --js #{jq} --warning_level QUIET >> #{jq_min}"
end
file selector => [sizzle] do
puts "Building selector code from Sizzle..."
sh "sed '/EXPOSE/r #{src_dir}/sizzle-jquery.js' #{sizzle} > #{selector}"
end
sh "cat " + files.map {|file| "src/" + file + ".js"}.join(" ") + file sizzle do
" | sed 's/Date:./&" + date + "/' | " + puts "Retrieving SizzleJS from Github..."
" sed s/@VERSION/" + version + "/ > dist/jquery.js" sh "git clone git://github.com/jeresig/sizzle.git #{sizzle_dir}"
end end
task :selector do file qunit do
sh "sed '/EXPOSE/r src/sizzle-jquery.js' src/sizzle/sizzle.js > src/selector.js" puts "Retrieving SizzleJS from Github..."
sh "git clone git://github.com/jquery/qunit.git #{qunit_dir}"
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment