#mostly borrowed from the rails Rakefile require 'rake' PKG_NAME = 'scriptaculous-js' PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : '' PKG_TIMESTAMP = Time.new.to_s PKG_VERSION = '1.8.1' + PKG_BUILD PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" PKG_DESTINATION = ENV["PKG_DESTINATION"] || "dist" RAILS_RAILTIES = (ENV["RAILS_ROOT"] || '../rails-trunk') + '/railties/html/javascripts' RAILS_ACTIONVIEW = (ENV["RAILS_ROOT"] || '../rails-trunk') + '/actionpack/lib/action_view/helpers/javascripts' desc "Default Task" task :default => [ :clean, :fresh_scriptaculous, :package ] task :clean do rm_rf PKG_DESTINATION end PKG_FILES = FileList[ 'CHANGELOG', 'README', 'MIT-LICENSE', 'lib/prototype.js', 'test/**/*.html', 'test/**/*.css', 'test/**/*.png', 'test/**/*.mp3' ] SRC_FILES = FileList[ 'src/scriptaculous.js', 'src/dragdrop.js', 'src/effects.js', 'src/controls.js', 'src/unittest.js', 'src/builder.js', 'src/slider.js', 'src/sound.js', 'src/unittest.js' ] RAILS_FILES = FileList[ 'src/effects.js', 'src/dragdrop.js', 'src/controls.js' ] DIRS = %w( src lib test test/functional test/unit ) desc "Make a ready-for-packaging distribution dir" task :fresh_scriptaculous do mkdir PKG_DESTINATION mkdir File.join(PKG_DESTINATION, PKG_FILE_NAME) mkdir_p DIRS.map { |dir| File.join(PKG_DESTINATION, PKG_FILE_NAME, dir) } PKG_FILES.each { |file| cp file, File.join(PKG_DESTINATION, PKG_FILE_NAME, file) } SRC_FILES.each do |file| File.open(File.join(PKG_DESTINATION, PKG_FILE_NAME, file), 'w+') do |dist| dist << ('// script.aculo.us '+File.basename(file)+' v'+PKG_VERSION+", "+PKG_TIMESTAMP+"\n\n") dist << File.read(file) end end end desc "Packages the fresh script.aculo.us scripts" task :package do system %{cd #{PKG_DESTINATION}; tar -czvf #{PKG_FILE_NAME}.tar.gz #{PKG_FILE_NAME}} system %{cd #{PKG_DESTINATION}; zip -r #{PKG_FILE_NAME}.zip #{PKG_FILE_NAME}} system %{cd #{PKG_DESTINATION}; tar -c #{PKG_FILE_NAME} | bzip2 --best > #{PKG_FILE_NAME}.tar.bz2 } end desc "Update rails trunk to latest script.aculo.us" task :update_rails do RAILS_FILES.each do |file| cp file, File.join(RAILS_RAILTIES, File.basename(file)) cp file, File.join(RAILS_ACTIONVIEW, File.basename(file)) end end require 'src/javascripttest' desc "Runs all the JavaScript unit tests and collects the results" JavaScriptTestTask.new(:unittest) do |t| t.mount("/lib") t.mount("/src") t.mount("/test") t.run("/test/unit/loading_test.html") t.run("/test/unit/unittest_test.html") t.run("/test/unit/bdd_test.html") t.run("/test/unit/effects_test.html") t.run("/test/unit/ajax_autocompleter_test.html") t.run("/test/unit/ajax_inplaceeditor_test.html") t.run("/test/unit/slider_test.html") t.run("/test/unit/string_test.html") t.run("/test/unit/builder_test.html") t.run("/test/unit/element_test.html") t.run("/test/unit/dragdrop_test.html") t.run("/test/unit/sortable_test.html") t.run("/test/unit/position_clone_test.html") t.browser(:safari) t.browser(:firefox) t.browser(:ie) t.browser(:konqueror) end