Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

file 65 lines (52 sloc) 1.81 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
require 'bundler'
require 'rspec/core/rake_task'
require 'capybara_webkit_builder'
require 'appraisal'

Bundler::GemHelper.install_tasks

desc "Generate a Makefile using qmake"
file 'Makefile' do
  CapybaraWebkitBuilder.makefile or exit(1)
end

desc "Regenerate dependencies using qmake"
task :qmake => 'Makefile' do
  CapybaraWebkitBuilder.qmake or exit(1)
end

desc "Build the webkit server"
task :build => :qmake do
  CapybaraWebkitBuilder.build or exit(1)
end

file 'bin/webkit_server' => :build

RSpec::Core::RakeTask.new do |t|
  t.pattern = "spec/**/*_spec.rb"
  t.rspec_opts = "--format progress"
end

desc "Default: build and run all specs"
task :default => [:build, :spec]

desc "Generate a new command called NAME"
task :generate_command do
  name = ENV['NAME'] or raise "Provide a name with NAME="

  header = "src/#{name}.h"
  source = "src/#{name}.cpp"

  %w(h cpp).each do |extension|
    File.open("templates/Command.#{extension}", "r") do |source_file|
      contents = source_file.read
      contents.gsub!("NAME", name)
      File.open("src/#{name}.#{extension}", "w") do |target_file|
        target_file.write(contents)
      end
    end
  end

  Dir.glob("src/*.pro").each do |project_file_name|
    project = IO.read(project_file_name)
    project.gsub!(/^(HEADERS = .*)/, "\\1\n #{name}.h \\")
    project.gsub!(/^(SOURCES = .*)/, "\\1\n #{name}.cpp \\")
    File.open(project_file_name, "w") { |file| file.write(project) }
  end

  File.open("src/find_command.h", "a") do |file|
    file.write("CHECK_COMMAND(#{name})\n")
  end

  command_factory_file_name = "src/CommandFactory.cpp"
  command_factory = IO.read(command_factory_file_name)
  command_factory.sub!(/^$/, "#include \"#{name}.h\"\n")
  File.open(command_factory_file_name, "w") { |file| file.write(command_factory) }
end
Something went wrong with that request. Please try again.