Rakefile in rmagick-2.13.3 vs Rakefile in rmagick-2.13.4
- old
+ new
@@ -1,40 +1,176 @@
-# note, there are other, legacy tasks in build_tarball.rake
-# thate currently are run by e.g.
-# rake -f build_tarball.rake clean release=RMagick_2-13-1
-# rake -f build_tarball.rake release=RMagick_2-13-1
require './lib/rmagick/version'
require 'fileutils'
-desc "build and push gem, tag and push repo"
-task "release" do
+task :config do
+ def version
+ Magick::VERSION
+ end
+ # e.g. 2.13.3 becomes RMagick_2-13-3
+ def version_tag
+ "RMagick_#{version.gsub(".","-")}"
+ end
+ # e.g. 2.13.3 becomes rmagick-2.13.3.gem
+ def gem_name
+ "rmagick-#{version}.gem"
+ end
+ def base
+ File.expand_path('..', __FILE__)
+ end
+end
+
+desc "abort when repo nto clean or has uncommited code"
+task :assert_clean_repo do
sh("git diff --exit-code")
abort "Git repo not clean" unless $?.success?
sh("git diff-index --quiet --cached HEAD")
abort "Git repo not commited" unless $?.success?
- version = Magick::VERSION
- # e.g. 2.13.3 becomes RMagick_2-13-3
- version_tag = "RMagick_#{version.gsub(".","-")}"
- # e.g. 2.13.3 becomes rmagick-2.13.3.gem
- gem_name = "rmagick-#{version}.gem"
+end
- # build gem
+desc "build gem"
+task :build => [:config] do
sh "gem build -V rmagick.gemspec"
if $?.success?
- base = File.expand_path('..', __FILE__)
FileUtils.mkdir_p(File.join(base, 'pkg'))
FileUtils.mv(File.join(base, gem_name), 'pkg')
- # push gem
- sh "gem push #{File.join(base, 'pkg', gem_name)}"
- if $?.success?
- sh "git tag -a -m \"Version #{version}\" #{version_tag}"
- STDOUT.puts "Tagged #{version_tag}."
- sh "git push"
- sh "git push --tags"
- else
- abort "tagging abd pushing gem failed"
- end
-
else
STDERR.puts "Could not build gem"
exit $?.exitstatus
end
end
+
+task :push_and_tag => [:build] do
+ sh "gem push #{File.join(base, 'pkg', gem_name)}"
+ if $?.success?
+ sh "git tag -a -m \"Version #{version}\" #{version_tag}"
+ STDOUT.puts "Tagged #{version_tag}."
+ sh "git push"
+ sh "git push --tags"
+ else
+ abort "tagging aborted pushing gem failed"
+ end
+end
+
+desc "Release"
+task :release => [:assert_clean_repo, :push_and_tag]
+
+desc "Release and build the legacy way"
+task :legacy_release=> ["legacy:README.html", "legacy:extconf", "legacy:doc", "legacy:manifest", "release"]
+
+namespace :legacy do
+ require 'find'
+
+ task :redcloth do
+ require 'redcloth'
+ end
+
+ README = "README.html"
+ MANIFEST = "ext/RMagick/MANIFEST"
+
+ # Change the version number placeholders in a file.
+ # Returns an array of lines from the file.
+ def reversion(name)
+ now = Time.new
+ now = now.strftime("%m/%d/%y")
+
+ lines = File.readlines name
+ lines.each do |line|
+ line.gsub!(%r{0\.0\.0}, Magick::VERSION)
+ line.gsub!(%r{YY/MM/DD}, now)
+ end
+ lines
+ end
+
+ # Rewrite a file containing embedded version number placeholders.
+ def reversion_file(name)
+ lines = reversion(name)
+ tmp_name = name + "_tmp"
+ mv name, tmp_name
+ begin
+ File.open(name, "w") { |f| lines.each { |line| f.write line } }
+ rescue
+ mv tmp_name, name
+ ensure
+ rm tmp_name
+ end
+ end
+
+ desc "Update version in extconf"
+ task :extconf do
+ reversion_file "ext/RMagick/extconf.rb"
+ end
+
+ desc "Build README.txt from README.textile using RedCloth"
+ task "README.txt" => [:redcloth] do
+ reversion_file "README.textile"
+ body = File.readlines "README.textile"
+ body = RedCloth.new(body.join).to_html + "\n"
+ File.open("README.txt", "w") { |f| f.write body }
+ end
+
+ desc "Build README.html from README.txt"
+ task README => "README.txt" do
+ puts "writing #{README}"
+ File.open(README, "w") do |html|
+ html.write <<END_HTML_HEAD
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <title>RMagick #{Magick::VERSION} README</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <meta name="GENERATOR" content="RedCloth">
+ </head>
+ <body>
+END_HTML_HEAD
+ html.write File.readlines("README.txt")
+ html.write <<END_HTML_TAIL
+ </body>
+</html>
+END_HTML_TAIL
+ end
+ end
+
+ desc "Update versions in html files"
+ task :doc do
+ Dir.chdir("doc") do
+ FileList["*.html"].each { |d| reversion_file(d) }
+ end
+ end
+
+ # Remove files we don't want in the tarball.
+ # Ensure files are not executable. (ref: bug #10080)
+ desc "Remove files we don't want in the .gem; ensure files are not executable"
+ task :fix_files do
+ rm "README.txt", :verbose => true
+ chmod 0644, FileList["doc/*.html", "doc/ex/*.rb", "doc/ex/images/*", "examples/*.rb"]
+ end
+
+ desc "Build manifest"
+ task :manifest do
+ now = Time.new
+ now = now.strftime("%H:%M:%S %m/%d/%y")
+ puts "generating #{MANIFEST}"
+
+ File.open(MANIFEST, "w") do |f|
+ f.puts "MANIFEST for #{Magick::VERSION} - #{now}\n\n"
+ Find.find('.') do |name|
+ next if File.directory? name
+ f.puts name[2..-1] # remove leading "./"
+ end
+ end
+ end
+
+end
+
+require 'rake/extensiontask'
+require 'rake/testtask'
+
+Rake::ExtensionTask.new('RMagick2') do |ext|
+ ext.ext_dir = 'ext/RMagick'
+end
+
+Rake::TestTask.new(:test) do |t|
+ t.libs << 'test'
+end
+
+task :test => :compile
+
+task :default => :test