require 'rake'
require 'spec/rake/spectask'
require 'rake/clean'

begin
  require 'hanna/rdoctask'

  Rake::RDocTask.new do |rdoc|
    rdoc.rdoc_dir = 'doc/rdoc'
    rdoc.options << '--line-numbers'
    rdoc.rdoc_files.add(['README.rdoc', 'CHANGELOG.rdoc', 'lib/**/*.rb'])
  end
rescue LoadError
  puts "Could not load hanna-rdoc.  Please install with mislav-hanna package"
end

task :default => :spec

desc 'Run the specs'
Spec::Rake::SpecTask.new do |t|
  t.warning = false
  t.spec_opts = ["--color"]
end

begin
  require 'jeweler'

  Jeweler::Tasks.new do |gemspec|
    gemspec.name          = "markaby"
    gemspec.summary       = "Markup as Ruby, write HTML in your native Ruby tongue"
    gemspec.description   = "Tim Fletcher and _why's ruby driven HTML templating system"
    gemspec.email         = "scott@railsnewbie.com"
    gemspec.homepage      = "http://markaby.github.com/markaby/"
    gemspec.authors       = ["_why", "Tim Fletcher", "John Barton", "spox", "smtlaissezfaire"]
    gemspec.add_dependency 'builder', '>=2.0.0'
  end
rescue LoadError
  puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
end

desc "List any Markaby specific warnings"
task :warnings do
  `ruby -w test/test_markaby.rb 2>&1`.split(/\n/).each do |line|
    next unless line =~ /warning:/
    next if line =~ /builder-/
    puts line
  end
end

desc "Start a Markaby-aware IRB session"
task :irb do
  sh 'irb -I lib -r markaby -r markaby/kernel_method'
end

namespace :gemspec do
  task :commit do
    sh "git add ."
    sh "git commit -m 'Update gemspec'"
  end
end

namespace :release do
  task :patch => [:spec, "version:bump:patch", :update_gemspec, :rerdoc, :tag_release, :build, :push_tags]

  task :update_gemspec => ["gemspec:generate", "gemspec:validate", "gemspec:commit"]
  task :tag_release do
    require File.dirname(__FILE__) + "/lib/markaby"
    version = "v#{Markaby::VERSION}"
    sh "git tag #{version}"
  end

  task :push_tags do
    sh "git push --tags"
  end
end

task :release => "release:patch"
