require 'rubygems' require 'rake' require 'rake/testtask' require 'rake/rdoctask' require 'rake/gempackagetask' require 'rake/contrib/rubyforgepublisher' PKG_VERSION = "1.3.0" PKG_FILES = FileList[ "lib/**/*", "bin/*", "test/**/*", "[A-Z]*", "Rakefile", "doc/**/*" ] desc "Default Task" task :default => [ :test ] # Run the unit tests desc "Run all unit tests" Rake::TestTask.new("test") { |t| t.libs << "lib" t.pattern = 'test/*/*_test.rb' t.verbose = true } # Make a console, useful when working on tests desc "Generate a test console" task :console do verbose( false ) { sh "irb -I lib/ -r 'classifier'" } end # Genereate the RDoc documentation desc "Create documentation" Rake::RDocTask.new("doc") { |rdoc| rdoc.title = "Ruby Classifier - Bayesian and LSI classification library" rdoc.rdoc_dir = 'doc' rdoc.rdoc_files.include('README') rdoc.rdoc_files.include('lib/**/*.rb') } # Genereate the package spec = Gem::Specification.new do |s| #### Basic information. s.name = 'classifier' s.version = PKG_VERSION s.summary = <<-EOF A general classifier module to allow Bayesian and other types of classifications. EOF s.description = <<-EOF A general classifier module to allow Bayesian and other types of classifications. EOF #### Which files are to be included in this gem? Everything! (Except CVS directories.) s.files = PKG_FILES #### Load-time details: library and application (you will need one or both). s.require_path = 'lib' s.autorequire = 'classifier' #### Documentation and testing. s.has_rdoc = true #### Dependencies and requirements. s.add_dependency('stemmer', '>= 1.0.0') s.requirements << "A porter-stemmer module to split word stems." #### Author and project details. s.author = "Lucas Carlson" s.email = "lucas@rufy.com" s.homepage = "http://classifier.rufy.com/" end Rake::GemPackageTask.new(spec) do |pkg| pkg.need_zip = true pkg.need_tar = true end desc "Report code statistics (KLOCs, etc) from the application" task :stats do require 'code_statistics' CodeStatistics.new( ["Library", "lib"], ["Units", "test"] ).to_s end desc "Publish new documentation" task :publish do `ssh rufy update-classifier-doc` Rake::RubyForgePublisher.new('classifier', 'cardmagic').upload end