Skip to content

Commit

Permalink
update Rakefile
Browse files Browse the repository at this point in the history
  • Loading branch information
rkh committed Apr 13, 2011
1 parent 3fe9d16 commit 561b7d2
Showing 1 changed file with 51 additions and 9 deletions.
60 changes: 51 additions & 9 deletions Rakefile
Expand Up @@ -9,11 +9,23 @@ task :spec => :test
CLEAN.include "**/*.rbc"

def source_version
line = File.read('lib/sinatra/base.rb')[/^\s*VERSION = .*/]
line.match(/.*VERSION = '(.*)'/)[1]
@source_version ||= begin
line = File.read('lib/sinatra/base.rb')[/^\s*VERSION = .*/]
line.match(/.*VERSION = '(.*)'/)[1]
end
end

def prev_feature
source_version.gsub(/^(\d\.)(\d+)\..*$/) { $1 + ($2.to_i - 1).to_s }
end

def prev_version
return prev_feature + '.0' if source_version.end_with? '.0'
source_version.gsub(/\d+$/) { |s| s.to_i - 1 }
end

# SPECS ===============================================================

task :test do
ENV['LANG'] = 'C'
ENV.delete 'LC_CTYPE'
Expand All @@ -24,26 +36,26 @@ Rake::TestTask.new(:test) do |t|
t.ruby_opts = ['-rubygems'] if defined? Gem
t.ruby_opts << '-I.'
end

# Rcov ================================================================

namespace :test do
desc 'Mesures test coverage'
task :coverage do
rm_f "coverage"
rcov = "rcov --text-summary -Ilib"
system("#{rcov} --no-html --no-color test/*_test.rb")
sh "rcov -Ilib test/*_test.rb"
end
end

# Website =============================================================
# Building docs requires HAML and the hanna gem:
# gem install mislav-hanna --source=http://gems.github.com

desc 'Generate RDoc under doc/api'
task 'doc' => ['doc:api']
task('doc:api') { sh "yardoc -o doc/api" }
CLEAN.include 'doc/api'

# README ===============================================================

task :add_template, [:name] do |t, args|
Dir.glob('README.*') do |file|
code = File.read(file)
Expand All @@ -56,13 +68,43 @@ task :add_template, [:name] do |t, args|
else
puts "Adding section to #{file}"
template = template.gsub(/Liquid/, args.name.capitalize).gsub(/liquid/, args.name.downcase)
code.gsub! /^(\s*===.*CoffeeScript)/, template << "\n\\1"
code.gsub! /^(\s*===.*CoffeeScript)/, "\n" << template << "\n\\1"
File.open(file, "w") { |f| f << code }
end
end
end
end

# Thanks in announcement ===============================================

team = ["Ryan Tomayko", "Blake Mizerany", "Simon Rozet", "Konstantin Haase"]
desc "list of contributors"
task :thanks, [:release,:backports] do |t, a|
a.with_defaults :release => "#{prev_version}..HEAD",
:backports => "#{prev_feature}.0..#{prev_feature}.x"
included = `git log --format=format:"%aN\t%s" #{a.release}`.lines.to_a
excluded = `git log --format=format:"%aN\t%s" #{a.backports}`.lines.to_a
commits = (included - excluded).group_by { |c| c[/^[^\t]+/] }
authors = commits.keys.sort_by { |n| - commits[n].size } - team
puts authors[0..-2].join(', ') << " and " << authors.last,
"(based on commits included in #{a.release}, but not in #{a.backports})"
end

task :authors, [:format, :sep] do |t, a|
a.with_defaults :format => "%s (%d)", :sep => ', '
authors = Hash.new { |h,k| h[k] = 0 }
blake = "Blake Mizerany"
mapping = {
"blake.mizerany@gmail.com" => blake, "bmizerany" => blake,
"a_user@mac.com" => blake, "ichverstehe" => "Harry Vangberg",
"Wu Jiang (nouse)" => "Wu Jiang" }
`git shortlog -s`.lines.map do |line|
num, name = line.split("\t", 2).map(&:strip)
authors[mapping[name] || name] += num.to_i
end
puts authors.sort_by { |n,c| -c }.map { |e| a.format % e }.join(a.sep)
end

# PACKAGING ============================================================

if defined?(Gem)
Expand Down Expand Up @@ -127,8 +169,8 @@ if defined?(Gem)
sh <<-SH
gem install #{package('.gem')} --local &&
gem push #{package('.gem')} &&
git add sinatra.gemspec &&
git commit --allow-empty -m '#{source_version} release' &&
git commit --allow-empty -a -m '#{source_version} release' &&
git tag -s v#{source_version} -m '#{source_version} release' &&
git tag -s #{source_version} -m '#{source_version} release' &&
git push && (git push sinatra || true) &&
git push --tags && (git push sinatra --tags || true)
Expand Down

0 comments on commit 561b7d2

Please sign in to comment.