$LOAD_PATH.unshift('lib')
require 'rubygems'
require 'bundler'

begin
  Bundler.setup(:default, :development)
rescue Bundler::BundlerError => e
  $stderr.puts e.message
  $stderr.puts "Run `bundle install` to install missing gems"
  exit e.status_code
end

require 'rake'
require 'rspec/core/rake_task'

task :specs

%w(client server).each do |type|
  public_task_name = "#{type}_specs"
  private_task_name = "_#{public_task_name}"

  RSpec::Core::RakeTask.new(private_task_name) do |task|
    task.pattern = "spec/#{type}/**/*_spec.rb"
  end

  desc "specs for: #{type}"
  task public_task_name do
    ENV['coverage'] = type
    Rake::Task[private_task_name].invoke
  end

  Rake::Task["specs"].prerequisites << public_task_name
end


require 'jeweler'
Jeweler::Tasks.new do |gem|
  gem.name = "mirage"
  gem.homepage = "https://github.com/lashd/mirage"
  gem.license = "MIT"
  gem.summary = "Mirage is a easy mock server for testing your applications"
  gem.description = 'Mirage aids testing of your applications by hosting mock responses so that your applications do not have to talk to real endpoints. Its accessible via HTTP and has a RESTful interface.'
  gem.authors = ["Leon Davis"]
  gem.executables = ['mirage']
  gem.post_install_message = %{
===============================================================================
Thanks you for installing mirage.   

Run Mirage with:

mirage start                                   

For more information go to: https://github.com/lashd/mirage/wiki
===============================================================================
}
end
Jeweler::RubygemsDotOrgTasks.new


require 'cucumber'
require 'cucumber/rake/task'
Cucumber::Rake::Task.new(:features) do |t|
  t.cucumber_opts = "mode=regression features --format pretty"
end

task :clean do |task|
  if system "gem list -i mirage"
    puts "cleaning"
    system "gem uninstall -x mirage"
  end
  Dir['*.gem'].each { |gem| FileUtils.rm_f(gem) }
  task.reenable
end

task :start do
  `RACK_ENV='development' && ruby ./bin/mirage start`
end

task :stop do
  `RACK_ENV='development' && ruby ./bin/mirage stop`
end

task :default => [:specs, :install, :features, :clean]