+# Sizzle, QUnit and jQuery files/dirs
+sizzle_dir = File.join( src_dir, "sizzle" )
+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`[/^Date:\s+(.+)$/, 1]
+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-20100917.jar"
+
+# Turn off output other than needed from `sh` and file commands
+verbose(false)
+
+# Tasks
+task :default => "all"
+
+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
+ sizzle_git = File.join(sizzle_dir, '.git')
+ qunit_git = File.join(qunit_dir, '.git')
+
+ puts "Updating SizzleJS with latest..."
+ sh "git --git-dir=#{sizzle_git} pull -q origin master"
+
+ puts "Updating QUnit with latest..."
+ sh "git --git-dir=#{qunit_git} pull -q origin master"
+end
+
+desc "Removes dist folder, selector.js, and Sizzle/QUnit"
+task :clean do
+ puts "Removing Distribution directory: #{dist_dir}..."
+ rm_rf dist_dir
+
+ puts "Removing built copy of Sizzle..."
+ rm_rf selector
+
+ puts "Removing cloned directories..."
+ rm_rf qunit_dir
+ rm_rf sizzle_dir