require 'rubygems' require 'erb' require 'fileutils' require 'rake/testtask' require 'json' desc "Build the documentation page" task :doc do source = 'documentation/index.html.erb' child = fork { exec "bin/coffee -bcw -o documentation/js documentation/coffee/*.coffee" } at_exit { Process.kill("INT", child) } Signal.trap("INT") { exit } loop do mtime = File.stat(source).mtime if !@mtime || mtime > @mtime rendered = ERB.new(File.read(source)).result(binding) File.open('index.html', 'w+') {|f| f.write(rendered) } end @mtime = mtime sleep 1 end end desc "Build coffee-script-source gem" task :gem do require 'rubygems' require 'rubygems/package' gemspec = Gem::Specification.new do |s| s.name = 'coffee-script-source' s.version = JSON.parse(File.read('package.json'))["version"] s.date = Time.now.strftime("%Y-%m-%d") s.homepage = "http://jashkenas.github.com/coffee-script/" s.summary = "The CoffeeScript Compiler" s.description = <<-EOS CoffeeScript is a little language that compiles into JavaScript. Underneath all of those embarrassing braces and semicolons, JavaScript has always had a gorgeous object model at its heart. CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way. EOS s.files = [ 'lib/coffee_script/coffee-script.js', 'lib/coffee_script/source.rb' ] s.authors = ['Jeremy Ashkenas'] s.email = 'jashkenas@gmail.com' s.rubyforge_project = 'coffee-script-source' end file = File.open("coffee-script-source.gem", "w") Gem::Package.open(file, 'w') do |pkg| pkg.metadata = gemspec.to_yaml path = "lib/coffee_script/source.rb" contents = <<-ERUBY module CoffeeScript module Source def self.bundled_path File.expand_path("../coffee-script.js", __FILE__) end end end ERUBY pkg.add_file_simple(path, 0644, contents.size) do |tar_io| tar_io.write(contents) end contents = File.read("extras/coffee-script.js") path = "lib/coffee_script/coffee-script.js" pkg.add_file_simple(path, 0644, contents.size) do |tar_io| tar_io.write(contents) end end end