# Rakefile for Qpid -*- ruby -*-
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

task :noop

# look for a root directory for out-of-tree builds

OUTPUT_DIR=ENV["OUTPUT_DIR"] || "."

require "rubygems"
require "rubygems/package_task"

require "rake/clean"
require "rake/extensiontask"
require "rake/rdoctask"
require "rake/testtask"

require "cucumber/rake/task"
require "spec/rake/spectask"

CLOBBER.include("pkg")

load "./lib/qpid/version.rb"

#-------------
# Gem Details.
#-------------

NAME     = "qpid"
# VERSION  = Qpid::VERSION
AUTHOR   = "Darryl L. Pierce"
EMAIL    = "dpierce@redhat.com"
HOMEPAGE = "http://qpid.apache.org"
SUMMARY  = "Qpid is an enterprise messaging framework."

desc "Default: run all tests."
task :default => :test

desc "Runs all tests."
task :test => :"test:all"

#---------------
# Testing tasks.
#---------------

namespace :test do

  desc "Run RSpec tests."
  Spec::Rake::SpecTask.new do |t|
    t.ruby_opts = ['-rtest/unit']
    t.spec_files = FileList["spec/**/*_spec.rb"]
    t.rcov       = true
    t.rcov_opts  = [
                    '--exclude', 'lib\/qpid.rb,spec\/,lib\/ruby',
                   ]
  end

  desc "Run all tests (default)."
  task :all => [:spec, :features]

  Cucumber::Rake::Task.new(:features) do |t|
    t.libs          = ["lib", "ext/nonblockio"]
    t.cucumber_opts = "--format progress"
  end

end

#---------------------
# Documentation tasks.
#---------------------

Rake::RDocTask.new(:rdoc => "rdoc",
                   :clobber_rdoc => "rdoc:clean",
                   :rerdoc => "rdoc:force") do |rd|
  rd.main    = "README.rdoc"
  rd.options << "--all"
  rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
end

#-----------------
# Package the gem.
#-----------------

spec = Gem::Specification.new do |s|
  s.name             = NAME
  s.version          = Qpid::VERSION
  s.platform         = Gem::Platform::RUBY
  s.extra_rdoc_files = ["README.rdoc"]
  s.summary          = SUMMARY
  s.description      = s.summary
  s.author           = AUTHOR
  s.email            = EMAIL
  s.homepage         = HOMEPAGE

  s.extensions = FileList["ext/**/extconf.rb"]

  s.require_path    = "lib"
  # DEPRECATED s.autorequire     = NAME
  s.files           = FileList["LICENSE",
                               "README.rdoc",
                               "Rakefile",
                               "TODO",
                               "lib/**/*.rb",
                               "test/**/*.rb",
                               "examples/**/*.rb",
                               "ext/**/*",
                               "features/**/*",
                               "spec/**/*"]
end

Gem::PackageTask.new(spec) do |pkg|
  pkg.package_dir = "#{OUTPUT_DIR}/pkg"
end

#------------------
# Build native code
#------------------

Rake::ExtensionTask.new("cqpid", spec)

