Rakefile
Encoding.default_internal = Encoding.default_external = Encoding::UTF_8 if defined?(Encoding)
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'spontaneous/version'
require 'rubygems'
require 'rake'
def name
"spontaneous"
end
def version
Spontaneous::VERSION
end
#############################################################################
#
# Standard tasks
#
#############################################################################
task :default => :test
require 'rake/testtask'
Rake::TestTask.new(:test) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/{unit,functional,experimental}/**/test_*.rb'
test.verbose = false
end
namespace :test do
Rake::TestTask.new(:units) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/unit/**/test_*.rb'
test.verbose = true
end
Rake::TestTask.new(:slow) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/slow/**/test_*.rb'
test.verbose = true
end
Rake::TestTask.new(:functionals) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/functional/**/test_*.rb'
test.verbose = true
end
Rake::TestTask.new(:experimental) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/experimental/**/test_*.rb'
test.verbose = true
end
Rake::TestTask.new(:javascript) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/javascript/**/test_*.rb'
test.verbose = true
end
Rake::TestTask.new(:ui) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/ui/**/test_*.rb'
test.verbose = true
end
Rake::TestTask.new(:js) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/javascript/**/test_*.rb'
test.verbose = true
end
Rake::TestTask.new(:integration) do |test|
test.libs << 'test'
test.ruby_opts << '-rubygems'
test.pattern = 'test/integration/**/test_*.rb'
test.verbose = true
end
end
desc "Generate RCov test coverage and open in your browser"
task :coverage do
require 'rcov'
sh "rm -fr coverage"
sh "rcov test/test_*.rb"
sh "open coverage/index.html"
end
#############################################################################
#
# Packaging tasks
#
#############################################################################
def gemspec_file
"#{name}.gemspec"
end
def gem_file
"#{name}-#{version}.gem"
end
namespace :gem do
desc "Create tag v#{version} and build and push #{gem_file} to Rubygems"
task :release => :build do
unless `git branch` =~ /^\* master$/
puts "You must be on the master branch to release!"
exit!
end
sh "git commit --allow-empty -a -m 'Release #{version}'"
sh "git tag v#{version}"
sh "git push origin master"
sh "git push origin v#{version}"
sh "gem push pkg/#{gem_file}"
end
desc "Build #{gem_file} into the pkg directory"
task :build do
sh "gem build #{gemspec_file}"
sh "mkdir -p pkg"
sh "mv #{gem_file} pkg"
end
end
namespace :asset do
desc "Fingerprints a file"
task :fingerprint do
require 'digest/md5'
unless file = (ENV["file"] || ENV["FILE"])
puts "Usage rake asset:fingerprint file=path/to/file.ext"
exit 1
end
unless File.file?(file)
puts "File #{file.inspect} does not exist or is a directory"
exit 1
end
fingerprint = Digest::MD5.file(file).hexdigest
*name_parts, ext = File.basename(file).split(".")
name = name_parts.join(".")
if name =~ /-([0-9a-fA-F]{32})$/
puts "Removing existing fingerprint '#{$1}'"
name = name.gsub(/-#{$1}/, "")
end
name = "%s-%s.%s" % [name, fingerprint, ext]
path = File.join File.dirname(file), name
system "git mv #{file} #{path}"
p path
end
end