require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rake/packagetask'
require 'rake/contrib/rubyforgepublisher'

desc "Default Task"
task :default => [ :test_dbi_mysql, :test_ruby_mysql, :test_mysql_ruby ]

# Run the unit tests

Rake::TestTask.new("test_dbi_mysql") { |t|
  t.libs << "test"
  t.libs << "test/connections/dbi_mysql"
  t.pattern = 'test/*_test.rb'
  t.verbose = true
}

Rake::TestTask.new("test_ruby_mysql") { |t|
  t.libs << "test"
  t.libs << "test/connections/ruby_mysql"
  t.pattern = 'test/*_test.rb'
  t.verbose = true
}

Rake::TestTask.new("test_mysql_ruby") { |t|
  t.libs << "test"
  t.libs << "test/connections/mysql_ruby"
  t.pattern = 'test/*_test.rb'
  t.verbose = true
}


# Genereate the RDoc documentation

Rake::RDocTask.new { |rdoc|
  rdoc.rdoc_dir = 'doc'
  rdoc.template = 'css2'
  rdoc.title    = "ActiveRecord -- Less painful object-relational mapping"
  rdoc.options << '--line-numbers --inline-source'
  rdoc.rdoc_files.include('README', 'RUNNING_UNIT_TESTS')
  rdoc.rdoc_files.include('lib/**/*.rb') #, 'doc/**/*.rdoc')
}


# Create compressed packages

Rake::PackageTask.new("active_record", "0.5") do |p|
  p.need_tar = true
  p.need_zip = true
  p.package_files.include(
    "lib/**/*", "test/**/*", "examples/**/*", "doc/**/*", "[A-Z]*", "install.rb", "rakefile"
  )
end


# Install rake using the standard install.rb script.

desc "Install the application"
task :install do
  ruby "install.rb"
end


desc "Count lines in the main rake file"
task :lines do
  lines = 0
  codelines = 0
  Dir.foreach("lib/active_record") { |file_name| 
    next unless file_name =~ /.*rb/
    
    f = File.open("lib/active_record/" + file_name)

    while line = f.gets
      lines += 1
      next if line =~ /^\s*$/
      next if line =~ /^\s*#/
      codelines += 1
    end
  }
  puts "Lines #{lines}, LOC #{codelines}"
end

desc "Publish to RubyForge"
task :rubyforge do
    Rake::RubyForgePublisher.new('activerecord', 'webster132').upload
end
