You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
6.7 KiB
212 lines
6.7 KiB
# Rakefile
|
|
#
|
|
# $Revision: 1.27 $ by $Author: anupamsg $
|
|
# $Name: $
|
|
#
|
|
# Copyright (c) 2006, 2007 Anupam Sengupta
|
|
#
|
|
# All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without modification,
|
|
# are permitted provided that the following conditions are met:
|
|
#
|
|
# - Redistributions of source code must retain the above copyright notice, this
|
|
# list of conditions and the following disclaimer.
|
|
#
|
|
# - Redistributions in binary form must reproduce the above copyright notice, this
|
|
# list of conditions and the following disclaimer in the documentation and/or
|
|
# other materials provided with the distribution.
|
|
#
|
|
# - Neither the name of the organization nor the names of its contributors may
|
|
# be used to endorse or promote products derived from this software without
|
|
# specific prior written permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
|
|
require 'rubygems'
|
|
require 'rake/gempackagetask'
|
|
|
|
require 'rake/clean'
|
|
require 'rake/packagetask'
|
|
require 'rake/testtask'
|
|
require 'rake/rdoctask'
|
|
|
|
require 'fileutils'
|
|
|
|
# General Stuff ####################################################
|
|
|
|
$:.insert 0, File.expand_path( File.join( File.dirname(__FILE__), 'lib' ) )
|
|
require 'tree' # To read the version information.
|
|
|
|
PKG_NAME = "rubytree"
|
|
PKG_VERSION = Tree::VERSION
|
|
PKG_FULLNAME = PKG_NAME + "-" + PKG_VERSION
|
|
PKG_SUMMARY = "Ruby implementation of the Tree data structure."
|
|
PKG_DESCRIPTION = <<-END
|
|
Provides a generic tree data-structure with ability to
|
|
store keyed node-elements in the tree. The implementation
|
|
mixes in the Enumerable module.
|
|
|
|
Website: http://rubytree.rubyforge.org/
|
|
END
|
|
|
|
PKG_FILES = FileList[
|
|
'[A-Z]*',
|
|
'*.rb',
|
|
'lib/**/*.rb',
|
|
'test/**/*.rb'
|
|
]
|
|
|
|
# Default is to create a rubygem.
|
|
desc "Default Task"
|
|
task :default => :gem
|
|
|
|
begin # Try loading hoe
|
|
require 'hoe'
|
|
# If Hoe is found, use it to define tasks
|
|
# =======================================
|
|
Hoe.new(PKG_NAME, PKG_VERSION) do |p|
|
|
p.rubyforge_name = PKG_NAME
|
|
p.author = "Anupam Sengupta"
|
|
p.email = "anupamsg@gmail.com"
|
|
p.summary = PKG_SUMMARY
|
|
p.description = PKG_DESCRIPTION
|
|
p.url = "http://rubytree.rubyforge.org/"
|
|
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
|
p.remote_rdoc_dir = 'rdoc'
|
|
p.need_tar = true
|
|
p.need_zip = true
|
|
p.test_globs = ['test/test_*.rb']
|
|
p.spec_extras = {
|
|
:has_rdoc => true,
|
|
:platform => Gem::Platform::RUBY,
|
|
:has_rdoc => true,
|
|
:extra_rdoc_files => ['README', 'COPYING', 'ChangeLog', 'History.txt'],
|
|
:rdoc_options => ['--main', 'README'],
|
|
:autorequire => 'tree'
|
|
}
|
|
end
|
|
|
|
rescue LoadError # If Hoe is not found
|
|
# If Hoe is not found, then use the usual Gemspec based Rake tasks
|
|
# ================================================================
|
|
spec = Gem::Specification.new do |s|
|
|
s.name = PKG_NAME
|
|
s.version = PKG_VERSION
|
|
s.platform = Gem::Platform::RUBY
|
|
s.author = "Anupam Sengupta"
|
|
s.email = "anupamsg@gmail.com"
|
|
s.homepage = "http://rubytree.rubyforge.org/"
|
|
s.rubyforge_project = 'rubytree'
|
|
s.summary = PKG_SUMMARY
|
|
s.add_dependency('rake', '>= 0.7.2')
|
|
s.description = PKG_DESCRIPTION
|
|
s.has_rdoc = true
|
|
s.extra_rdoc_files = ['README', 'COPYING', 'ChangeLog']
|
|
s.autorequire = "tree"
|
|
s.files = PKG_FILES.to_a
|
|
s.test_files = Dir.glob('test/test*.rb')
|
|
end
|
|
|
|
desc "Prepares for installation"
|
|
task :prepare do
|
|
ruby "setup.rb config"
|
|
ruby "setup.rb setup"
|
|
end
|
|
|
|
desc "Installs the package #{PKG_NAME}"
|
|
task :install => [:prepare] do
|
|
ruby "setup.rb install"
|
|
end
|
|
|
|
Rake::GemPackageTask.new(spec) do |pkg|
|
|
pkg.need_zip = true
|
|
pkg.need_tar = true
|
|
end
|
|
|
|
Rake::TestTask.new do |t|
|
|
t.libs << "test"
|
|
t.test_files = FileList['test/test*.rb']
|
|
t.verbose = true
|
|
end
|
|
|
|
end # End loading Hoerc
|
|
# ================================================================
|
|
|
|
|
|
# The following tasks are loaded independently of Hoe
|
|
|
|
# Hoe's rdoc task is ugly.
|
|
Rake::RDocTask.new(:docs) do |rd|
|
|
rd.rdoc_files.include("README", "COPYING", "ChangeLog", "lib/**/*.rb")
|
|
rd.rdoc_dir = 'doc'
|
|
rd.title = "#{PKG_FULLNAME} Documentation"
|
|
|
|
# Use the template only if it is present, otherwise, the standard template is
|
|
# used.
|
|
template = "../allison/allison.rb"
|
|
rd.template = template if File.file?(template)
|
|
|
|
rd.options << '--line-numbers' << '--inline-source'
|
|
end
|
|
|
|
# Optional TAGS Task.
|
|
# Needs https://rubyforge.org/projects/rtagstask/
|
|
begin
|
|
require 'rtagstask'
|
|
RTagsTask.new do |rd|
|
|
rd.vi = false
|
|
end
|
|
rescue LoadError
|
|
end
|
|
|
|
# Optional RCOV Task
|
|
# Needs http://eigenclass.org/hiki/rcov
|
|
begin
|
|
require 'rcov/rcovtask'
|
|
Rcov::RcovTask.new do |t|
|
|
t.test_files = FileList['test/test*.rb']
|
|
t.rcov_opts << "--exclude 'rcov.rb'" # rcov itself should not be profiled
|
|
# t.verbose = true # uncomment to see the executed commands
|
|
end
|
|
rescue LoadError
|
|
end
|
|
|
|
#Rakefile,v $
|
|
# Revision 1.21 2007/07/21 05:14:43 anupamsg
|
|
# Added a VERSION constant to the Tree module,
|
|
# and using the same in the Rakefile.
|
|
#
|
|
# Revision 1.20 2007/07/21 03:24:25 anupamsg
|
|
# Minor edits to parameter names. User visible functionality does not change.
|
|
#
|
|
# Revision 1.19 2007/07/19 02:16:01 anupamsg
|
|
# Release 0.4.0 (and minor fix in Rakefile).
|
|
#
|
|
# Revision 1.18 2007/07/18 20:15:06 anupamsg
|
|
# Added two predicate methods in BinaryTreeNode to determine whether a node
|
|
# is a left or a right node.
|
|
#
|
|
# Revision 1.17 2007/07/18 07:17:34 anupamsg
|
|
# Fixed a issue where TreeNode.ancestors was shadowing Module.ancestors. This method
|
|
# has been renamed to TreeNode.parentage.
|
|
#
|
|
# Revision 1.16 2007/07/17 05:34:03 anupamsg
|
|
# Added an optional tags Rake-task for generating the TAGS file for Emacs.
|
|
#
|
|
# Revision 1.15 2007/07/17 04:42:45 anupamsg
|
|
# Minor fixes to the Rakefile.
|
|
#
|
|
# Revision 1.14 2007/07/17 03:39:28 anupamsg
|
|
# Moved the CVS Log keyword to end of the files.
|
|
#
|
|
|