0
+require 'rake/testtask'
0
+require 'rake/rdoctask'
0
+require 'rake/packagetask'
0
+require 'rake/gempackagetask'
0
+require 'rake/contrib/sshpublisher'
0
+require 'spec/rake/spectask'
0
+short_name = full_name.downcase
0
+# Many of these tasks were garnered from zenspider's Hoe
0
+# just forced to work my way
0
+desc 'Default: run unit tests.'
0
+spec = Gem::Specification.new do |s|
0
+ s.version = FastXml::VERSION
0
+ s.author = "Mark Guzman"
0
+ s.email = "segfault@hasno.info"
0
+ s.homepage = "http://rubyforge.org/fastxml"
0
+ s.platform = Gem::Platform::RUBY
0
+ s.summary = "Fast Xml Library"
0
+ s.rubyforge_project = short_name
0
+ s.description = "A simple ruby interface to libxml (with hpricot-like syntax)"
0
+ s.files = FileList["{bin,lib,test_data}/**/*"].to_a
0
+ s.require_path = "lib"
0
+ s.autorequire = short_name
0
+ s.test_files = FileList["{test}/**/test*.rb"].to_a
0
+ s.extra_rdoc_files = %w[README LICENSE]
0
+ s.add_dependency("rspec", ">= 1.0.3")
0
+ s.add_dependency("rake", ">= #{RAKEVERSION}")
0
+ s.add_dependency("rubyforge", ">= #{::RubyForge::VERSION}")
0
+desc "Task for cruise Control"
0
+task :cruise => ["spec"] do
0
+ out = ENV['CC_BUILD_ARTIFACTS']
0
+ system "mv coverage #{out}"
0
+Spec::Rake::SpecTask.new do |t|
0
+ t.spec_files = FileList[ 'test/*spec.rb' ]
0
+Rake::TestTask.new do |t|
0
+ t.test_files = FileList[ 'test/test*.rb', 'test/*test.rb' ]
0
+ desc 'Measures test coverage'
0
+ rcov = "rcov --aggregate coverage.data --text-summary -Ilib"
0
+ system("#{rcov} --html test/test*.rb")
0
+ system("open coverage/index.html") if PLATFORM['darwin']
0
+ desc 'Heckle the tests'
0
+ system("heckle FeedEater::Feed")
0
+ desc 'Show which test files fail when run alone.'
0
+ tests = Dir["test/**/test_*.rb"] + Dir["test/**/*_test.rb"]
0
+ if not system "ruby -Ibin:lib:test #{test} &> /dev/null" then
0
+ puts "Dependency Issues: #{test}"
0
+Rake::RDocTask.new do |rd|
0
+ rd.rdoc_files.include("README", "LICENSE", "lib/**/*.rb")
0
+ rd.title = "%s (%s) Documentation" % [ full_name, spec.version ]
0
+Rake::GemPackageTask.new(spec) do |pkg|
0
+desc 'Clean up all the extras'
0
+task :clean => [ :clobber_rdoc, :clobber_package ] do
0
+ %w[*.gem ri coverage*].each do |pattern|
0
+ rm_rf files unless files.empty?
0
+desc 'Publish RDoc to RubyForge'
0
+task :publish_docs => [:clean, :rdoc] do
0
+ config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
0
+ host = "#{config["username"]}@rubyforge.org"
0
+ remote_dir = "/var/www/gforge-projects/#{spec.rubyforge_project}"
0
+ sh %{rsync -av --delete #{local_dir}/ #{host}:#{remote_dir}}
0
+desc 'Package and upload the release to rubyforge.'
0
+task :release => [:clean, :package] do |t|
0
+ v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
0
+ abort "Versions don't match '#{v}' vs '#{spec.version}'" if v != spec.version.to_s
0
+ pkg = "pkg/#{spec.name}-#{spec.version}"
0
+ puts "release_id = rf.add_release #{spec.rubyforge_project.inspect}, #{spec.name.inspect}, #{version.inspect}, \"#{pkg}.tgz\""
0
+ puts "rf.add_file #{spec.rubyforge_project.inspect}, #{spec.name.inspect}, release_id, \"#{pkg}.gem\""
0
+ changes = open("NOTES").readlines.join("") if File.exists?("NOTES")
0
+ c["release_notes"] = spec.description if spec.description
0
+ c["release_changes"] = changes if changes
0
+ c["preformatted"] = true
0
+ files = ["#{pkg}.tgz", "#{pkg}.gem"].compact
0
+ puts "Releasing #{spec.name} v. #{spec.version}"
0
+ rf.add_release spec.rubyforge_project, spec.name, spec.version.to_s, *files
0
+desc 'Install the package as a gem'
0
+task :install_gem => [:clean, :package] do
0
+ sh "sudo gem install pkg/*.gem"
Comments
No one has commented yet.