module Buildr::GWT::ProjectExtension

Public Instance Methods

gwt(module_names, options = {}) click to toggle source
# File addon/buildr/gwt.rb, line 247
def gwt(module_names, options = {})
  p = options[:target_project]
  target_project = p.nil? ? project : p.is_a?(String) ? project(p) : p
  output_key = options[:output_key] || project.id
  output_dir = project._(:target, :generated, :gwt, output_key)
  artifacts = ([project.compile.target] + project.compile.sources + project.resources.sources).flatten.compact.collect do |a|
    a.is_a?(String) ? file(a) : a
  end
  dependencies = options[:dependencies] ? artifacts(options[:dependencies]) : (project.compile.dependencies + [project.compile.target]).flatten.compact.collect do |dep|
    dep.is_a?(String) ? file(dep) : dep
  end

  unit_cache_dir = project._(:target, :gwt, :unit_cache_dir, output_key)

  version = gwt_detect_version(dependencies) || Buildr::GWT.version

  additional_gwt_deps = []
  existing_deps = project.compile.dependencies.collect do |d|
    a = artifact(d)
    a.invoke if a.is_a?(Buildr::Artifact)
    a.to_s
  end
  Buildr::GWT.dependencies(version).each do |d|
    a = artifact(d)
    a.invoke if a.respond_to?(:invoke)
    unless options[:skip_merge_gwt_dependencies]
      project.iml.main_dependencies << a unless !project.iml? || existing_deps.include?(a.to_s)
      project.compile.dependencies << a unless existing_deps.include?(a.to_s)
    end
    additional_gwt_deps << a
  end

  task = project.file(output_dir) do
    Buildr::GWT.gwtc_main(module_names,
                          (dependencies + artifacts + additional_gwt_deps).flatten.compact,
                          output_dir,
                          unit_cache_dir,
                          {:version => version}.merge(options))
  end
  task.enhance(dependencies)
  task.enhance([project.compile])
  target_project.assets.paths << task
  task
end
gwt_superdev_runner(module_name, options = {}) click to toggle source
# File addon/buildr/gwt.rb, line 292
def gwt_superdev_runner(module_name, options = {})

  dependencies = []
  if options[:dependencies]
    dependencies = artifacts(options[:dependencies])
  else
    sources = [] + project.compile.sources + project.resources.sources
    classes = [] + project.compile.dependencies + [project.compile.target]
    dependencies = (classes + sources).collect do |dep|
      dep.is_a?(String) ? file(dep) : dep
    end
  end

  desc 'Run Superdev mode'
  project.task('superdev') do
    work_dir = project._(:target, :gwt, :superdev)
    mkdir_p work_dir
    Buildr::GWT.gwt_superdev(module_name,
                             dependencies,
                             work_dir,
                             {:version => gwt_detect_version(dependencies)}.merge(options))
  end
end

Protected Instance Methods

gwt_detect_version(dependencies) click to toggle source
# File addon/buildr/gwt.rb, line 318
def gwt_detect_version(dependencies)
  version = nil
  dependencies.each do |dep|
    if dep.respond_to?(:to_spec_hash)
      hash = dep.to_spec_hash
      if 'com.google.gwt' == hash[:group] && 'gwt-user' == hash[:id] && :jar == hash[:type]
        version = hash[:version]
      end
    end
  end
  version
end