summaryrefslogtreecommitdiff
path: root/Rakefile
diff options
context:
space:
mode:
authorAustin Ziegler <austin@halostatue.ca>2011-07-30 19:40:23 -0400
committerAustin Ziegler <austin@halostatue.ca>2011-07-30 19:40:23 -0400
commit9feacf82a4859362662c05ffaaeaf26b40a36018 (patch)
tree57be359c74bcdabd2510835f5568b64ba61f769d /Rakefile
parentca444f81819ee49d3a174271dbca75061a4067f5 (diff)
downloaddiff-lcs-9feacf82a4859362662c05ffaaeaf26b40a36018.tar.gz
Converting diff-lcs from svn to git format.
Diffstat (limited to 'Rakefile')
-rw-r--r--Rakefile116
1 files changed, 116 insertions, 0 deletions
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..e2ce55b
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,116 @@
+#! /usr/bin/env rake
+$LOAD_PATH.unshift('lib')
+
+require 'rubygems'
+require 'rake/gempackagetask'
+require 'rake/contrib/rubyforgepublisher'
+require 'diff/lcs'
+require 'archive/tar/minitar'
+require 'zlib'
+
+DISTDIR = "diff-lcs-#{Diff::LCS::VERSION}"
+TARDIST = "../#{DISTDIR}.tar.gz"
+
+DATE_RE = %r<(\d{4})[./-]?(\d{2})[./-]?(\d{2})(?:[\sT]?(\d{2})[:.]?(\d{2})[:.]?(\d{2})?)?>
+
+if ENV['RELEASE_DATE']
+ year, month, day, hour, minute, second = DATE_RE.match(ENV['RELEASE_DATE']).captures
+ year ||= 0
+ month ||= 0
+ day ||= 0
+ hour ||= 0
+ minute ||= 0
+ second ||= 0
+ ReleaseDate = Time.mktime(year, month, day, hour, minute, second)
+else
+ ReleaseDate = nil
+end
+
+task :test do |t|
+ require 'test/unit/testsuite'
+ require 'test/unit/ui/console/testrunner'
+
+ runner = Test::Unit::UI::Console::TestRunner
+
+ $LOAD_PATH.unshift('tests')
+ $stderr.puts "Checking for test cases:" if t.verbose
+ Dir['tests/*test*.rb'].each do |testcase|
+ $stderr.puts "\t#{testcase}" if t.verbose
+ load testcase
+ end
+
+ suite = Test::Unit::TestSuite.new("Diff::LCS Tests")
+
+ ObjectSpace.each_object(Class) do |testcase|
+ suite << testcase.suite if testcase < Test::Unit::TestCase
+ end
+
+ runner.run(suite)
+end
+
+spec = eval(File.read("diff-lcs.gemspec"))
+desc "Build the RubyGem for Diff::LCS."
+task :gem => [ :test ]
+Rake::GemPackageTask.new(spec) do |g|
+ g.need_tar = false
+ g.need_zip = false
+ g.package_dir = ".."
+end
+
+desc "Build an Diff::LCS .tar.gz distribution."
+task :tar => [ TARDIST ]
+file TARDIST => [ :test ] do |t|
+ current = File.basename(Dir.pwd)
+ Dir.chdir("..") do
+ begin
+ files = Dir["#{current}/**/*"].select { |dd| dd !~ %r{(?:/CVS/?|~$)} }
+ files.map! do |dd|
+ ddnew = dd.gsub(/^#{current}/, DISTDIR)
+ mtime = ReleaseDate || File.stat(dd).mtime
+ if File.directory?(dd)
+ { :name => ddnew, :mode => 0755, :dir => true, :mtime => mtime }
+ else
+ if dd =~ %r{bin/}
+ mode = 0755
+ else
+ mode = 0644
+ end
+ data = File.read(dd)
+ { :name => ddnew, :mode => mode, :data => data, :size => data.size,
+ :mtime => mtime }
+ end
+ end
+
+ ff = File.open(t.name.gsub(%r{^\.\./}o, ''), "wb")
+ gz = Zlib::GzipWriter.new(ff)
+ tw = Archive::Tar::Minitar::Writer.new(gz)
+
+ files.each do |entry|
+ if entry[:dir]
+ tw.mkdir(entry[:name], entry)
+ else
+ tw.add_file_simple(entry[:name], entry) { |os| os.write(entry[:data]) }
+ end
+ end
+ ensure
+ tw.close if tw
+ gz.close if gz
+ end
+ end
+end
+task TARDIST => [ :test ]
+
+def sign(file)
+ sh %("C:\\Program Files\\Windows Privacy Tools\\GnuPG\\Gpg.exe" -ba #{file})
+end
+
+task :signtar => [ :tar ] do
+ sign TARDIST
+end
+task :signgem => [ :gem ] do
+ sign "../#{DISTDIR}.gem"
+end
+
+desc "Build everything."
+task :default => [ :signtar, :signgem ] do
+end