begin
require 'rubygems'
rescue Exception
nil
end require 'rake/clean' require 'rake/testtask' require 'rake/gempackagetask' require 'rake/rdoctask'
# Determine the current version of the software
if `ruby -Ilib -rstream -e'puts STREAM_VERSION'` =~ /S+$/
PKG_VERSION = $&
else
PKG_VERSION = "0.0.0"
end
SRC_RB = FileList['lib .rb']
# The default task is run if rake is given no explicit arguments.
desc “Default Task” task :default => :test
# Define a test task.
Rake::TestTask.new { |t|
#t.libs << "tests" #t.pattern = 'tests/Test*.rb' t.verbose = true
}
task :test
# Define a test that will run all the test targets. desc “Run all test targets” task :testall => [:test ]
# Install stream using the standard install.rb script.
desc “Install the application” task :install do
ruby "install.rb"
end
# Create a task to build the RDOC documentation tree.
rd = Rake::RDocTask.new(“rdoc”) { |rdoc|
rdoc.rdoc_dir = 'html'
# rdoc.template = 'kilmer' # rdoc.template = 'css2'
rdoc.title = "Stream - Extended External Iterators" rdoc.options << '--line-numbers' << '--inline-source' rdoc.rdoc_files.include('README') rdoc.rdoc_files.include('lib .rb', 'doc/ *.rdoc')
}
# ==================================================================== # Create a task that will package the stream software into distributable # tar, zip and gem files.
PKG_FILES = FileList[
'install.rb', '[A-Z]*', 'lib/ *.rb', 'test/**/*.rb', 'examples/**/*'
]
if ! defined?(Gem)
puts "Package Target requires RubyGEMs"
else
spec = Gem::Specification.new do |s| #### Basic information. s.name = 'stream' s.version = PKG_VERSION s.summary = "Stream - Extended External Iterators" s.description = <<-EOF Module Stream defines an interface for external iterators. EOF #### Dependencies and requirements. #s.add_dependency('log4r', '> 1.0.4') #s.requirements << "" #### Which files are to be included in this gem? Everything! (Except CVS directories.) s.files = PKG_FILES.to_a #### C code extensions. #s.extensions << "ext/rmagic/extconf.rb" #### Load-time details: library and application (you will need one or both). s.require_path = 'lib' # Use these for libraries. s.autorequire = 'stream' #### Documentation and testing. s.has_rdoc = true #s.test_suite_file = "test/rmagic-tests.rb" #### Author and project details. s.author = "Horst Duchene" s.email = "hd.at.clr@hduchene.de" s.homepage = "http://rgl.rubyforge.org" s.rubyforge_project = "rgl" end Rake::GemPackageTask.new(spec) do |pkg| pkg.need_zip = true pkg.need_tar = true end
end
# Misc tasks =========================================================
def count_lines(filename)
lines = 0 codelines = 0 open(filename) { |f| f.each do |line| lines += 1 next if line =~ /^\s*$/ next if line =~ /^\s*#/ codelines += 1 end } [lines, codelines]
end
def show_line(msg, lines, loc)
printf "%6s %6s %s\n", lines.to_s, loc.to_s, msg
end
desc “Count lines in the main files” task :lines do
total_lines = 0 total_code = 0 show_line("File Name", "LINES", "LOC") SRC_RB.each do |fn| lines, codelines = count_lines(fn) show_line(fn, lines, codelines) total_lines += lines total_code += codelines end show_line("TOTAL", total_lines, total_code)
end
ARCHIVEDIR = '/mnt/flash'
task :archive => [:package] do
cp FileList["pkg/*.tgz", "pkg/*.zip", "pkg/*.gem"], ARCHIVEDIR
end