diff -r 1b096869b568 -r 1d3cfd4837a8 Rakefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Rakefile Wed May 07 18:22:04 2008 +0000 @@ -0,0 +1,146 @@ +#!rake -*- ruby -*- +# +# Ruby-Ezmlm rakefile +# +# Based on Ben Bleything's Rakefile for Linen (URL?) +# +# Copyright (c) 2007 LAIKA, Inc. +# +# Mistakes: +# * Michael Granger +# + +BEGIN { + require 'pathname' + basedir = Pathname.new( __FILE__ ).dirname + libdir = basedir + 'lib' + + $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s ) +} + + +require 'rubygems' + +require 'rake' +require 'tmpdir' +require 'pathname' + +$dryrun = false + +# Pathname constants +BASEDIR = Pathname.new( __FILE__ ).expand_path.dirname.relative_path_from( Pathname.getwd ) +BINDIR = BASEDIR + 'bin' +LIBDIR = BASEDIR + 'lib' +DOCSDIR = BASEDIR + 'docs' +VARDIR = BASEDIR + 'var' +WWWDIR = VARDIR + 'www' +MANUALDIR = DOCSDIR + 'manual' +RDOCDIR = DOCSDIR + 'rdoc' +STATICWWWDIR = WWWDIR + 'static' +PKGDIR = BASEDIR + 'pkg' +ARTIFACTS_DIR = Pathname.new( ENV['CC_BUILD_ARTIFACTS'] || '' ) +RAKE_TASKDIR = BASEDIR + 'rake' + +TEXT_FILES = %w( Rakefile README LICENSE ). + collect {|filename| BASEDIR + filename } + +SPECDIR = BASEDIR + 'spec' +SPEC_FILES = Pathname.glob( SPECDIR + '**/*_spec.rb' ). + delete_if {|item| item =~ /\.svn/ } +# Ideally, this should be automatically generated. +SPEC_EXCLUDES = 'spec,monkeypatches,/Library/Ruby,/var/lib,/usr/local/lib' + +BIN_FILES = Pathname.glob( BINDIR + '*'). + delete_if {|item| item =~ /\.svn/ } +LIB_FILES = Pathname.glob( LIBDIR + '**/*.rb'). + delete_if {|item| item =~ /\.svn/ } + +RELEASE_FILES = BIN_FILES + TEXT_FILES + LIB_FILES + SPEC_FILES + +require RAKE_TASKDIR + 'helpers.rb' + +### Package constants +PKG_NAME = 'ruby-ezmlm' +PKG_VERSION_FROM = LIBDIR + 'ezmlm.rb' +PKG_VERSION = find_pattern_in_file( /VERSION = '(\d+\.\d+\.\d+)'/, PKG_VERSION_FROM ).first +PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" + +RELEASE_NAME = "REL #{PKG_VERSION}" + +require RAKE_TASKDIR + 'svn.rb' +require RAKE_TASKDIR + 'verifytask.rb' + +if Rake.application.options.trace + $trace = true + log "$trace is enabled" +end + +if Rake.application.options.dryrun + $dryrun = true + log "$dryrun is enabled" + Rake.application.options.dryrun = false +end + +### Project Gemspec +GEMSPEC = Gem::Specification.new do |gem| + pkg_build = get_svn_rev( BASEDIR ) || 0 + + gem.name = PKG_NAME + gem.version = "%s.%s" % [ PKG_VERSION, pkg_build ] + + gem.summary = "A Ruby programmatic interface to ezmlm-idx" + gem.description = "Ruby-Ezmlm is a Ruby programmatic interface to ezmlm-idx " + + "mailing lists, message archives, and command-line tools." + + gem.authors = "Michael Granger, Jeremiah Jordan" + gem.email = "opensource@laika.com" + gem.homepage = "http://opensource.laika.com/wiki/ruby-ezmlm" + + gem.rubyforge_project = 'laika' + + gem.has_rdoc = true + + gem.files = RELEASE_FILES. + collect {|f| f.relative_path_from(BASEDIR).to_s } + gem.test_files = SPEC_FILES. + collect {|f| f.relative_path_from(BASEDIR).to_s } + + gem.add_dependency( 'tmail', '>= 1.2.3.1' ) +end + + +# Load task plugins +Pathname.glob( RAKE_TASKDIR + '*.rb' ).each do |tasklib| + trace "Loading task lib #{tasklib}" + require tasklib +end + + +### Default task +task :default => [:clean, :spec, 'coverage:verify', :package] + + +### Task: clean +desc "Clean pkg, coverage, and rdoc; remove .bak files" +task :clean => [ :clobber_rdoc, :clobber_package, :clobber_coverage ] do + files = FileList['**/*.bak'] + files.clear_exclude + File.rm( files ) unless files.empty? + FileUtils.rm_rf( 'artifacts' ) +end + + +### Cruisecontrol task +desc "Cruisecontrol build" +task :cruise => [:clean, :coverage, :package] do |task| + raise "Artifacts dir not set." if ARTIFACTS_DIR.to_s.empty? + artifact_dir = ARTIFACTS_DIR.cleanpath + artifact_dir.mkpath + + $stderr.puts "Copying coverage stats..." + FileUtils.cp_r( 'coverage', artifact_dir ) + + $stderr.puts "Copying packages..." + FileUtils.cp_r( FileList['pkg/*'].to_a, artifact_dir ) +end +