Author: donaldp
Date: Mon Sep 24 11:59:04 2012
New Revision: 1389317

URL: http://svn.apache.org/viewvc?rev=1389317&view=rev
Log:
Merge the components of the eclipse IDE support into a single file

Removed:
    buildr/trunk/lib/buildr/ide/eclipse/
Modified:
    buildr/trunk/lib/buildr.rb
    buildr/trunk/lib/buildr/ide/eclipse.rb

Modified: buildr/trunk/lib/buildr.rb
URL: 
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr.rb?rev=1389317&r1=1389316&r2=1389317&view=diff
==============================================================================
--- buildr/trunk/lib/buildr.rb (original)
+++ buildr/trunk/lib/buildr.rb Mon Sep 24 11:59:04 2012
@@ -82,10 +82,6 @@ require 'buildr/java/doc'
 require 'buildr/java/deprecated'
 require 'buildr/ide/idea'
 require 'buildr/ide/eclipse'
-# Order is significant for auto-detection, from most specific to least
-require 'buildr/ide/eclipse/plugin'
-require 'buildr/ide/eclipse/scala'
-require 'buildr/ide/eclipse/java'
 
 # Methods defined in Buildr are both instance methods (e.g. when included in 
Project)
 # and class methods when invoked like Buildr.artifacts().

Modified: buildr/trunk/lib/buildr/ide/eclipse.rb
URL: 
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/ide/eclipse.rb?rev=1389317&r1=1389316&r2=1389317&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/ide/eclipse.rb (original)
+++ buildr/trunk/lib/buildr/ide/eclipse.rb Mon Sep 24 11:59:04 2012
@@ -413,12 +413,126 @@ module Buildr
       end
     end
 
+    module Plugin
+      include Extension
+
+      NATURE    = 'org.eclipse.pde.PluginNature'
+      CONTAINER = 'org.eclipse.pde.core.requiredPlugins'
+      BUILDERS   = ['org.eclipse.pde.ManifestBuilder', 
'org.eclipse.pde.SchemaBuilder']
+
+      after_define do |project|
+        eclipse = project.eclipse
+
+        # smart defaults
+        if eclipse.natures.empty? && (
+            (File.exists? project.path_to("plugin.xml")) ||
+            (File.exists? project.path_to("OSGI-INF")) ||
+            (File.exists?(project.path_to("META-INF/MANIFEST.MF")) && 
File.read(project.path_to("META-INF/MANIFEST.MF")).match(/^Bundle-SymbolicName:/)))
+          eclipse.natures = [NATURE, Buildr::Eclipse::Java::NATURE]
+          eclipse.classpath_containers = [CONTAINER, 
Buildr::Eclipse::Java::CONTAINER] if eclipse.classpath_containers.empty?
+          eclipse.builders = BUILDERS + [Buildr::Eclipse::Java::BUILDER] if 
eclipse.builders.empty?
+        end
+
+        # :plugin nature explicitly set
+        if eclipse.natures.include? :plugin
+          unless eclipse.natures.include? NATURE
+            # plugin nature must be before java nature
+            eclipse.natures += [Buildr::Eclipse::Java::NATURE] unless 
eclipse.natures.include? Buildr::Eclipse::Java::NATURE
+            index = eclipse.natures.index(Buildr::Eclipse::Java::NATURE) || -1
+            eclipse.natures = eclipse.natures.insert(index, NATURE)
+          end
+          unless eclipse.classpath_containers.include? CONTAINER
+            # plugin container must be before java container
+            index = 
eclipse.classpath_containers.index(Buildr::Eclipse::Java::CONTAINER) || -1
+            eclipse.classpath_containers = 
eclipse.classpath_containers.insert(index, CONTAINER)
+          end
+          unless (eclipse.builders.include?(BUILDERS[0]) && 
eclipse.builders.include?(BUILDERS[1]))
+            # plugin builder must be before java builder
+            index = 
eclipse.classpath_containers.index(Buildr::Eclipse::Java::BUILDER) || -1
+            eclipse.builders = eclipse.builders.insert(index, BUILDERS[1]) 
unless eclipse.builders.include? BUILDERS[1]
+            index = eclipse.classpath_containers.index(BUILDERS[1]) || -1
+            eclipse.builders = eclipse.builders.insert(index, BUILDERS[0]) 
unless eclipse.builders.include? BUILDERS[0]
+          end
+        end
+      end
+    end
+
+    module Scala
+      include Extension
+
+      NATURE    = 'ch.epfl.lamp.sdt.core.scalanature'
+      CONTAINER = 'ch.epfl.lamp.sdt.launching.SCALA_CONTAINER'
+      BUILDER   = 'ch.epfl.lamp.sdt.core.scalabuilder'
+
+      after_define :eclipse => :eclipse_scala
+      after_define :eclipse_scala do |project|
+        eclipse = project.eclipse
+        # smart defaults
+        if eclipse.natures.empty? && (project.compile.language == :scala || 
project.test.compile.language == :scala)
+          eclipse.natures = [NATURE, Buildr::Eclipse::Java::NATURE]
+          eclipse.classpath_containers = [CONTAINER, 
Buildr::Eclipse::Java::CONTAINER] if eclipse.classpath_containers.empty?
+          eclipse.builders = BUILDER if eclipse.builders.empty?
+          eclipse.exclude_libs += Buildr::Scala::Scalac.dependencies
+        end
+
+        # :scala nature explicitly set
+        if eclipse.natures.include? :scala
+          unless eclipse.natures.include? NATURE
+            # scala nature must be before java nature
+            eclipse.natures += [Buildr::Eclipse::Java::NATURE] unless 
eclipse.natures.include? Buildr::Eclipse::Java::NATURE
+            index = eclipse.natures.index(Buildr::Eclipse::Java::NATURE) || -1
+            eclipse.natures = eclipse.natures.insert(index, NATURE)
+          end
+          unless eclipse.classpath_containers.include? CONTAINER
+            # scala container must be before java container
+            index = 
eclipse.classpath_containers.index(Buildr::Eclipse::Java::CONTAINER) || -1
+            eclipse.classpath_containers = 
eclipse.classpath_containers.insert(index, CONTAINER)
+          end
+          unless eclipse.builders.include? BUILDER
+            # scala builder overrides java builder
+            eclipse.builders -= [Buildr::Eclipse::Java::BUILDER]
+            eclipse.builders += [BUILDER]
+          end
+          eclipse.exclude_libs += Buildr::Scala::Scalac.dependencies
+        end
+      end
+    end
+
+    module Java
+      include Extension
+
+      NATURE    = 'org.eclipse.jdt.core.javanature'
+      CONTAINER = 'org.eclipse.jdt.launching.JRE_CONTAINER'
+      BUILDER    = 'org.eclipse.jdt.core.javabuilder'
+
+      after_define do |project|
+        eclipse = project.eclipse
+
+        # smart defaults
+        if project.compile.language == :java || project.test.compile.language 
== :java
+          eclipse.natures = NATURE if eclipse.natures.empty?
+          eclipse.classpath_containers = CONTAINER if 
eclipse.classpath_containers.empty?
+          eclipse.builders = BUILDER if eclipse.builders.empty?
+        end
+
+        # :java nature explicitly set
+        if eclipse.natures.include? :java
+          eclipse.natures += [NATURE] unless eclipse.natures.include? NATURE
+          eclipse.classpath_containers += [CONTAINER] unless 
eclipse.classpath_containers.include? CONTAINER
+          eclipse.builders += [BUILDER] unless eclipse.builders.include? 
BUILDER
+        end
+      end
+    end
+
   end
 
 end # module Buildr
 
 class Buildr::Project
   include Buildr::Eclipse
+  include Buildr::Eclipse::Plugin
+  include Buildr::Eclipse::Scala
+  include Buildr::Eclipse::Java
 end
 
 


Reply via email to