namespace :jasmine do

task :require do
  require 'jasmine'
end

task :require_json do
  begin
    require 'multi_json'
  rescue LoadError
    puts "You must have a JSON library installed to run jasmine:ci. Try \"gem install multi_json\""
    exit
  end
end

desc "Run continuous integration tests"
task :ci => ["jasmine:require_json", "jasmine:require"] do
  if Jasmine::Dependencies.rspec2?
    require "rspec"
    require "rspec/core/rake_task"
  else
    require "spec"
    require 'spec/rake/spectask'
  end

  if Jasmine::Dependencies.rspec2?
    RSpec::Core::RakeTask.new(:jasmine_continuous_integration_runner) do |t|
      t.rspec_opts = ["--colour", "--format", ENV['JASMINE_SPEC_FORMAT'] || "progress"]
      t.verbose = true
      if Jasmine::Dependencies.rails_3_asset_pipeline?
        t.rspec_opts += ["-r #{File.expand_path(File.join(::Rails.root, 'config', 'environment'))}"]
      end
      t.pattern = [Jasmine.runner_filepath]
    end
  else
    Spec::Rake::SpecTask.new(:jasmine_continuous_integration_runner) do |t|
      t.spec_opts = ["--color", "--format", ENV['JASMINE_SPEC_FORMAT'] || "specdoc"]
      t.verbose = true
      t.spec_files = [Jasmine.runner_filepath]
    end
  end
  Rake::Task["jasmine_continuous_integration_runner"].invoke
end

task :server => "jasmine:require" do
  port = ENV['JASMINE_PORT'] || 8888
  puts "your tests are here:"
  puts "  http://localhost:#{port}/"
  Jasmine.load_configuration_from_yaml
  app = Jasmine::Application.app(Jasmine.config)
  Jasmine::Server.new(port, app).start
end

end

desc “Run specs via server” task :jasmine => ['jasmine:server']