buildr 1.3.5 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. data/CHANGELOG +153 -8
  2. data/README.rdoc +1 -1
  3. data/addon/buildr/antlr.rb +5 -5
  4. data/addon/buildr/drb.rb +18 -18
  5. data/addon/buildr/hibernate.rb +18 -14
  6. data/addon/buildr/javacc.rb +4 -4
  7. data/addon/buildr/jetty.rb +5 -5
  8. data/addon/buildr/nailgun.rb +23 -23
  9. data/addon/buildr/openjpa.rb +1 -1
  10. data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
  11. data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
  12. data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
  13. data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
  14. data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
  15. data/addon/buildr/protobuf.rb +75 -0
  16. data/addon/buildr/xmlbeans.rb +5 -5
  17. data/buildr.buildfile +2 -2
  18. data/buildr.gemspec +8 -7
  19. data/doc/_layouts/default.html +2 -2
  20. data/doc/artifacts.textile +4 -4
  21. data/doc/building.textile +35 -3
  22. data/doc/contributing.textile +5 -0
  23. data/doc/download.textile +16 -5
  24. data/doc/extending.textile +38 -12
  25. data/doc/installing.textile +6 -5
  26. data/doc/languages.textile +182 -42
  27. data/doc/more_stuff.textile +2 -2
  28. data/doc/packaging.textile +14 -15
  29. data/doc/projects.textile +7 -2
  30. data/doc/quick_start.textile +4 -4
  31. data/doc/scripts/buildr-git.rb +63 -63
  32. data/doc/scripts/gitflow.rb +21 -21
  33. data/doc/settings_profiles.textile +9 -2
  34. data/doc/testing.textile +16 -5
  35. data/etc/KEYS +38 -0
  36. data/lib/buildr/core/application.rb +33 -27
  37. data/lib/buildr/core/build.rb +41 -28
  38. data/lib/buildr/core/cc.rb +172 -0
  39. data/lib/buildr/core/checks.rb +1 -1
  40. data/lib/buildr/core/common.rb +7 -6
  41. data/lib/buildr/core/compile.rb +7 -8
  42. data/lib/buildr/core/doc.rb +263 -0
  43. data/lib/buildr/core/environment.rb +6 -6
  44. data/lib/buildr/core/filter.rb +77 -35
  45. data/lib/buildr/core/generate.rb +7 -7
  46. data/lib/buildr/core/help.rb +1 -1
  47. data/lib/buildr/core/osx.rb +6 -6
  48. data/lib/buildr/core/progressbar.rb +4 -4
  49. data/lib/buildr/core/project.rb +144 -36
  50. data/lib/buildr/core/shell.rb +34 -34
  51. data/lib/buildr/core/test.rb +89 -20
  52. data/lib/buildr/core/transports.rb +8 -7
  53. data/lib/buildr/core/util.rb +77 -23
  54. data/lib/buildr/core.rb +1 -0
  55. data/lib/buildr/groovy/bdd.rb +5 -5
  56. data/lib/buildr/groovy/compiler.rb +19 -15
  57. data/lib/buildr/groovy/shell.rb +6 -6
  58. data/lib/buildr/ide/eclipse/java.rb +3 -3
  59. data/lib/buildr/ide/eclipse/plugin.rb +8 -5
  60. data/lib/buildr/ide/eclipse/scala.rb +4 -2
  61. data/lib/buildr/ide/eclipse.rb +148 -75
  62. data/lib/buildr/ide/idea.rb +2 -2
  63. data/lib/buildr/ide/idea7x.rb +23 -4
  64. data/lib/buildr/java/ant.rb +4 -4
  65. data/lib/buildr/java/bdd.rb +51 -54
  66. data/lib/buildr/java/cobertura.rb +57 -35
  67. data/lib/buildr/java/commands.rb +14 -5
  68. data/lib/buildr/java/compiler.rb +3 -217
  69. data/lib/buildr/java/deprecated.rb +4 -4
  70. data/lib/buildr/java/doc.rb +70 -0
  71. data/lib/buildr/java/emma.rb +22 -22
  72. data/lib/buildr/java/jruby.rb +4 -4
  73. data/lib/buildr/java/jtestr_runner.rb.erb +27 -25
  74. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
  75. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +8 -3
  76. data/lib/buildr/java/packaging.rb +30 -29
  77. data/lib/buildr/java/pom.rb +4 -4
  78. data/lib/buildr/java/rjb.rb +6 -6
  79. data/lib/buildr/java/test_result.rb +61 -85
  80. data/lib/buildr/java/tests.rb +44 -27
  81. data/lib/buildr/java/version_requirement.rb +8 -8
  82. data/lib/buildr/java.rb +1 -0
  83. data/lib/buildr/packaging/archive.rb +55 -22
  84. data/lib/buildr/packaging/artifact.rb +75 -36
  85. data/lib/buildr/packaging/artifact_namespace.rb +90 -78
  86. data/lib/buildr/packaging/artifact_search.rb +5 -5
  87. data/lib/buildr/packaging/gems.rb +11 -7
  88. data/lib/buildr/packaging/package.rb +10 -7
  89. data/lib/buildr/packaging/tar.rb +14 -14
  90. data/lib/buildr/packaging/version_requirement.rb +30 -10
  91. data/lib/buildr/packaging/ziptask.rb +51 -13
  92. data/lib/buildr/scala/bdd.rb +25 -20
  93. data/lib/buildr/scala/compiler.rb +87 -40
  94. data/lib/buildr/scala/doc.rb +106 -0
  95. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
  96. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
  97. data/lib/buildr/scala/shell.rb +14 -9
  98. data/lib/buildr/scala/tests.rb +33 -26
  99. data/lib/buildr/scala.rb +1 -0
  100. data/lib/buildr/shell.rb +33 -33
  101. data/lib/buildr.rb +1 -1
  102. data/rakelib/all-in-one.rake +113 -0
  103. data/rakelib/checks.rake +1 -1
  104. data/rakelib/doc.rake +7 -0
  105. data/rakelib/package.rake +1 -1
  106. data/rakelib/release.rake +9 -6
  107. data/rakelib/rspec.rake +26 -7
  108. data/rakelib/setup.rake +15 -3
  109. data/rakelib/stage.rake +18 -11
  110. data/spec/addon/drb_spec.rb +25 -25
  111. data/spec/core/application_spec.rb +111 -21
  112. data/spec/core/build_spec.rb +16 -15
  113. data/spec/core/cc_spec.rb +174 -0
  114. data/spec/core/checks_spec.rb +34 -34
  115. data/spec/core/common_spec.rb +51 -5
  116. data/spec/core/compile_spec.rb +89 -14
  117. data/spec/core/extension_spec.rb +127 -19
  118. data/spec/core/generate_spec.rb +2 -2
  119. data/spec/core/project_spec.rb +10 -10
  120. data/spec/core/test_spec.rb +144 -35
  121. data/spec/core/transport_spec.rb +8 -8
  122. data/spec/core/util_spec.rb +63 -5
  123. data/spec/groovy/bdd_spec.rb +5 -5
  124. data/spec/groovy/compiler_spec.rb +29 -18
  125. data/spec/ide/eclipse_spec.rb +185 -9
  126. data/spec/ide/idea7x_spec.rb +22 -10
  127. data/spec/java/ant_spec.rb +9 -5
  128. data/spec/java/bdd_spec.rb +29 -37
  129. data/spec/java/cobertura_spec.rb +12 -12
  130. data/spec/java/commands_spec.rb +34 -0
  131. data/spec/java/compiler_spec.rb +53 -53
  132. data/spec/java/emma_spec.rb +11 -11
  133. data/spec/java/java_spec.rb +10 -10
  134. data/spec/java/packaging_spec.rb +67 -20
  135. data/spec/java/test_coverage_helper.rb +18 -18
  136. data/spec/java/tests_spec.rb +13 -9
  137. data/spec/packaging/archive_spec.rb +187 -20
  138. data/spec/packaging/artifact_namespace_spec.rb +172 -83
  139. data/spec/packaging/artifact_spec.rb +83 -18
  140. data/spec/packaging/packaging_spec.rb +41 -14
  141. data/spec/sandbox.rb +23 -12
  142. data/spec/scala/bdd_spec.rb +13 -8
  143. data/spec/scala/compiler_spec.rb +18 -13
  144. data/spec/scala/scala.rb +3 -3
  145. data/spec/scala/tests_spec.rb +46 -24
  146. data/spec/spec_helpers.rb +28 -10
  147. data/spec/version_requirement_spec.rb +25 -11
  148. metadata +149 -133
  149. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
  150. data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +0 -35
  151. data/rakelib/stage.rake~ +0 -213
@@ -0,0 +1,106 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+ require 'buildr/core/doc'
17
+ require 'buildr/scala/compiler' # ensure Scala dependencies are ready
18
+
19
+ module Buildr
20
+ module Doc
21
+ class Scaladoc < Base
22
+ specify :language => :scala, :source_ext => 'scala'
23
+
24
+ def generate(sources, target, options = {})
25
+ cmd_args = [ '-d', target, Buildr.application.options.trace ? '-verbose' : '' ]
26
+ options.reject { |key, value| [:sourcepath, :classpath].include?(key) }.
27
+ each { |key, value| value.invoke if value.respond_to?(:invoke) }.
28
+ each do |key, value|
29
+ case value
30
+ when true, nil
31
+ cmd_args << "-#{key}"
32
+ when false
33
+ cmd_args << "-no#{key}"
34
+ when Hash
35
+ value.each { |k,v| cmd_args << "-#{key}" << k.to_s << v.to_s }
36
+ else
37
+ cmd_args += Array(value).map { |item| ["-#{key}", item.to_s] }.flatten
38
+ end
39
+ end
40
+ [:sourcepath, :classpath].each do |option|
41
+ Array(options[option]).flatten.tap do |paths|
42
+ cmd_args << "-#{option}" << paths.flatten.map(&:to_s).join(File::PATH_SEPARATOR) unless paths.empty?
43
+ end
44
+ end
45
+ cmd_args += sources.flatten.uniq
46
+ unless Buildr.application.options.dryrun
47
+ info "Generating Scaladoc for #{project.name}"
48
+ trace (['scaladoc'] + cmd_args).join(' ')
49
+ Java.load
50
+ Java.scala.tools.nsc.ScalaDoc.main(cmd_args.to_java(Java.java.lang.String)) == 0 or
51
+ fail 'Failed to generate Scaladocs, see errors above'
52
+ end
53
+ end
54
+ end
55
+
56
+ class VScaladoc < Base
57
+ VERSION = '1.2-SNAPSHOT'
58
+ Buildr.repositories.remote << 'http://scala-tools.org/repo-snapshots'
59
+
60
+ class << self
61
+ def dependencies
62
+ [ "org.scala-tools:vscaladoc:jar:#{VERSION}" ]
63
+ end
64
+ end
65
+
66
+ Java.classpath << dependencies
67
+
68
+ specify :language => :scala, :source_ext => 'scala'
69
+
70
+ def generate(sources, target, options = {})
71
+ cmd_args = [ '-d', target, (Buildr.application.options.trace ? '-verbose' : ''),
72
+ '-sourcepath', project.compile.sources.join(File::PATH_SEPARATOR) ]
73
+ options.reject { |key, value| [:sourcepath, :classpath].include?(key) }.
74
+ each { |key, value| value.invoke if value.respond_to?(:invoke) }.
75
+ each do |key, value|
76
+ case value
77
+ when true, nil
78
+ cmd_args << "-#{key}"
79
+ when false
80
+ cmd_args << "-no#{key}"
81
+ when Hash
82
+ value.each { |k,v| cmd_args << "-#{key}" << k.to_s << v.to_s }
83
+ else
84
+ cmd_args += Array(value).map { |item| ["-#{key}", item.to_s] }.flatten
85
+ end
86
+ end
87
+ [:sourcepath, :classpath].each do |option|
88
+ Array(options[option]).flatten.tap do |paths|
89
+ cmd_args << "-#{option}" << paths.flatten.map(&:to_s).join(File::PATH_SEPARATOR) unless paths.empty?
90
+ end
91
+ end
92
+ cmd_args += sources.flatten.uniq
93
+ unless Buildr.application.options.dryrun
94
+ info "Generating VScaladoc for #{project.name}"
95
+ trace (['vscaladoc'] + cmd_args).join(' ')
96
+ Java.load
97
+ Java.org.scala_tools.vscaladoc.Main.main(cmd_args.to_java(Java.java.lang.String)) == 0 or
98
+ fail 'Failed to generate VScaladocs, see errors above'
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ Buildr::Doc.engines << Buildr::Doc::Scaladoc
106
+ Buildr::Doc.engines << Buildr::Doc::VScaladoc
@@ -0,0 +1,57 @@
1
+ /* Licensed to the Apache Software Foundation (ASF) under one or more
2
+ * contributor license agreements. See the NOTICE file distributed with this
3
+ * work for additional information regarding copyright ownership. The ASF
4
+ * licenses this file to you under the Apache License, Version 2.0 (the
5
+ * "License"); you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ * License for the specific language governing permissions and limitations
14
+ * under the License.
15
+ */
16
+
17
+ package org.apache.buildr;
18
+
19
+ import java.lang.reflect.Field;
20
+ import java.lang.reflect.Method;
21
+ import java.net.URL;
22
+ import java.net.URLClassLoader;
23
+ import java.io.File;
24
+
25
+ /**
26
+ * @author Daniel Spiewak
27
+ */
28
+ public class SpecsSingletonRunner {
29
+ // Incompatible with JVM 1.4 target
30
+ // @throws(classOf[Throwable])
31
+ public static void main(String[] args) {
32
+ boolean colors = (args.length > 1 && args[1].equals("-c"));
33
+ String spec = colors ? args[2] : args[1];
34
+
35
+ run(args[0], colors, spec);
36
+ }
37
+
38
+ // Incompatible with JVM 1.4 target
39
+ // @throws(classOf[Throwable])
40
+ static void run(String path, boolean colors, String spec) {
41
+ try {
42
+ File parent = new File(path);
43
+ URL specURL = new File(parent, spec.replace('.', '/') + ".class").toURL();
44
+ URLClassLoader loader = new URLClassLoader(new URL[] { specURL }, Thread.currentThread().getContextClassLoader());
45
+
46
+ Class clazz = loader.loadClass(spec);
47
+ Object instance = clazz.getField("MODULE$").get(null);
48
+
49
+ Method main = clazz.getMethod("main", String[].class);
50
+
51
+ String[] args = colors ? new String[] { "-c" } : new String[] {};
52
+ main.invoke(instance, new Object[] { args });
53
+ } catch (Exception e) {
54
+ throw new RuntimeException(e);
55
+ }
56
+ }
57
+ }
@@ -21,30 +21,35 @@ module Buildr
21
21
  module Scala
22
22
  class ScalaShell < Buildr::Shell::Base
23
23
  include Buildr::Shell::JavaRebel
24
-
24
+
25
25
  class << self
26
26
  def lang
27
27
  :scala
28
28
  end
29
-
29
+
30
30
  def to_sym
31
31
  :scala
32
32
  end
33
33
  end
34
-
34
+
35
35
  def launch
36
- cp = project.compile.dependencies +
36
+ cp = project.compile.dependencies +
37
37
  Scalac.dependencies +
38
38
  [project.path_to(:target, :classes)]
39
-
39
+
40
40
  props = {
41
- 'env.classpath' => cp.join(File::PATH_SEPARATOR),
42
41
  'scala.home' => Scalac.scala_home
43
42
  }
44
-
45
- Java::Commands.java 'scala.tools.nsc.MainGenericRunner', {
43
+
44
+ jline = [File.expand_path("lib/jline.jar", Scalac.scala_home)].find_all do |f|
45
+ File.exist? f
46
+ end
47
+
48
+ Java::Commands.java 'scala.tools.nsc.MainGenericRunner',
49
+ '-cp', cp.join(File::PATH_SEPARATOR),
50
+ {
46
51
  :properties => props.merge(rebel_props(project)),
47
- :classpath => cp,
52
+ :classpath => Scalac.dependencies + jline,
48
53
  :java_args => rebel_args
49
54
  }
50
55
  end
@@ -23,16 +23,20 @@ require 'buildr/java/tests'
23
23
  module Buildr::Scala
24
24
  # Scala::Check is available when using Scala::Test or Scala::Specs
25
25
  module Check
26
- VERSION = '1.5'
27
-
26
+ VERSION = '1.6'
27
+
28
28
  class << self
29
29
  def version
30
30
  Buildr.settings.build['scala.check'] || VERSION
31
31
  end
32
-
32
+
33
+ def classifier
34
+ Buildr.settings.build['scala.check.classifier'] || ""
35
+ end
36
+
33
37
  def dependencies
34
- ["org.scala-tools.testing:scalacheck:jar:#{version}"]
35
- end
38
+ ["org.scala-tools.testing:scalacheck:jar:#{classifier}:#{version}"]
39
+ end
36
40
 
37
41
  private
38
42
  def const_missing(const)
@@ -42,8 +46,8 @@ module Buildr::Scala
42
46
  end
43
47
  end
44
48
  end
45
-
46
-
49
+
50
+
47
51
  # ScalaTest framework, the default test framework for Scala tests.
48
52
  #
49
53
  # Support the following options:
@@ -52,36 +56,36 @@ module Buildr::Scala
52
56
  # * :java_args -- Arguments passed as is to the JVM.
53
57
  class ScalaTest < Buildr::TestFramework::Java
54
58
 
55
- VERSION = '0.9.5'
59
+ VERSION = '1.0.1'
56
60
 
57
61
  class << self
58
62
  def version
59
63
  Buildr.settings.build['scala.test'] || VERSION
60
64
  end
61
-
65
+
62
66
  def dependencies
63
- ["org.scala-tools.testing:scalatest:jar:#{version}"] + Check.dependencies +
67
+ ["org.scalatest:scalatest:jar:#{version}"] + Check.dependencies +
64
68
  JMock.dependencies + JUnit.dependencies
65
- end
69
+ end
66
70
 
67
71
  def applies_to?(project) #:nodoc:
68
72
  !Dir[project.path_to(:source, :test, :scala, '**/*.scala')].empty?
69
- end
70
-
73
+ end
74
+
71
75
  private
72
76
  def const_missing(const)
73
77
  return super unless const == :REQUIRES # TODO: remove in 1.5
74
78
  Buildr.application.deprecated "Please use Scala::Test.dependencies/.version instead of ScalaTest::REQUIRES/VERSION"
75
79
  dependencies
76
80
  end
77
- end
81
+ end
78
82
 
79
83
  # annotation-based group inclusion
80
84
  attr_accessor :group_includes
81
-
85
+
82
86
  # annotation-based group exclusion
83
87
  attr_accessor :group_excludes
84
-
88
+
85
89
  def initialize(test_task, options)
86
90
  super
87
91
  @group_includes = []
@@ -100,7 +104,8 @@ module Buildr::Scala
100
104
  scalatest.each do |suite|
101
105
  info "ScalaTest #{suite.inspect}"
102
106
  # Use Ant to execute the ScalaTest task, gives us performance and reporting.
103
- reportFile = File.join(task.report_to.to_s, "TEST-#{suite}.txt")
107
+ reportDir = task.report_to.to_s
108
+ reportFile = File.join(reportDir, "TEST-#{suite}.txt")
104
109
  taskdef = Buildr.artifacts(self.class.dependencies).each(&:invoke).map(&:to_s)
105
110
  Buildr.ant('scalatest') do |ant|
106
111
  ant.taskdef :name=>'scalatest', :classname=>'org.scalatest.tools.ScalaTestTask',
@@ -109,42 +114,44 @@ module Buildr::Scala
109
114
  ant.suite :classname=>suite
110
115
  ant.reporter :type=>'stdout', :config=>reporter_options
111
116
  ant.reporter :type=>'file', :filename=> reportFile, :config=>reporter_options
117
+ ant.reporter :type=>(ScalaTest.version == "1.0") ? "xml" : "junitxml",
118
+ :directory=> reportDir, :config=>reporter_options
112
119
  # TODO: This should be name=>value pairs!
113
120
  #ant.includes group_includes.join(" ") if group_includes
114
121
  #ant.excludes group_excludes.join(" ") if group_excludes
115
- (options[:properties] || []).each { |name, value| ant.property :name=>name, :value=>value }
122
+ (options[:properties] || []).each { |name, value| ant.config :name=>name, :value=>value }
116
123
  end
117
124
  end
118
-
125
+
119
126
  # Parse for failures, errors, etc.
120
127
  # This is a bit of a pain right now because ScalaTest doesn't flush its
121
- # output synchronously before the Ant test finishes so we have to loop
122
- # and wait for an indication that the test run was completed.
128
+ # output synchronously before the Ant test finishes so we have to loop
129
+ # and wait for an indication that the test run was completed.
123
130
  failed = false
124
131
  completed = false
125
132
  wait = 0
126
133
  while (!completed) do
127
134
  File.open(reportFile, "r") do |input|
128
135
  while (line = input.gets) do
129
- failed = (line =~ /(TESTS? FAILED -)|(RUN STOPPED)|(RUN ABORTED)/) unless failed
130
- completed |= (line =~ /Run completed\./)
136
+ failed = (line =~ /(TESTS? FAILED)|(RUN STOPPED)|(RUN ABORTED)/) unless failed
137
+ completed |= (line =~ /Run completed/)
131
138
  break if (failed)
132
139
  end
133
140
  end
134
141
  wait += 1
135
- break if (failed || wait > 10)
142
+ break if (failed || wait > 10)
136
143
  unless completed
137
144
  sleep(1)
138
145
  end
139
146
  end
140
147
  success << suite if (completed && !failed)
141
148
  end
142
-
149
+
143
150
  success
144
151
  end # run
145
152
 
146
153
  end # ScalaTest
147
-
154
+
148
155
  end
149
156
 
150
157
 
data/lib/buildr/scala.rb CHANGED
@@ -20,6 +20,7 @@ Buildr.repositories.remote << 'http://scala-tools.org/repo-releases'
20
20
  require 'buildr/scala/compiler'
21
21
  require 'buildr/scala/tests'
22
22
  require 'buildr/scala/bdd'
23
+ require 'buildr/scala/doc'
23
24
  require 'buildr/scala/shell'
24
25
 
25
26
  Object::Scala = Buildr::Scala
data/lib/buildr/shell.rb CHANGED
@@ -19,7 +19,7 @@ module Buildr
19
19
  class << self
20
20
  def add(p)
21
21
  @providers ||= {}
22
-
22
+
23
23
  if p.lang == :none
24
24
  @providers[:none] ||= []
25
25
  @providers[:none] << p
@@ -28,11 +28,11 @@ module Buildr
28
28
  end
29
29
  end
30
30
  alias :<< :add
31
-
31
+
32
32
  def providers
33
33
  @providers ||= {}
34
34
  end
35
-
35
+
36
36
  def each
37
37
  providers.each do |lang, p|
38
38
  if lang == :none
@@ -46,51 +46,51 @@ module Buildr
46
46
  end
47
47
  end
48
48
  end
49
-
49
+
50
50
  module Shell
51
51
  class Base
52
52
  attr_reader :project
53
-
53
+
54
54
  class << self
55
55
  def lang
56
56
  :none
57
57
  end
58
-
58
+
59
59
  def to_sym
60
60
  @symbol ||= name.split('::').last.downcase.to_sym
61
61
  end
62
62
  end
63
-
63
+
64
64
  def initialize(project)
65
65
  @project = project
66
66
  end
67
-
67
+
68
68
  def build?
69
69
  true
70
70
  end
71
-
71
+
72
72
  def launch
73
73
  fail 'Not implemented'
74
74
  end
75
75
  end
76
-
76
+
77
77
  module JavaRebel
78
78
  def rebel_home
79
79
  unless @rebel_home
80
- @rebel_home = ENV['REBEL_HOME'] or ENV['JAVA_REBEL'] or ENV['JAVAREBEL'] or ENV['JAVAREBEL_HOME']
81
-
80
+ @rebel_home = ENV['REBEL_HOME'] or ENV['JREBEL'] or ENV['JREBEL_HOME']
81
+
82
82
  if @rebel_home and File.directory? @rebel_home
83
- @rebel_home += File::SEPARATOR + 'javarebel.jar'
83
+ @rebel_home += File::SEPARATOR + 'jrebel.jar'
84
84
  end
85
85
  end
86
-
86
+
87
87
  if @rebel_home and File.exists? @rebel_home
88
88
  @rebel_home
89
89
  else
90
90
  nil
91
91
  end
92
92
  end
93
-
93
+
94
94
  def rebel_args
95
95
  if rebel_home
96
96
  [
@@ -101,44 +101,44 @@ module Buildr
101
101
  []
102
102
  end
103
103
  end
104
-
104
+
105
105
  def rebel_props(project)
106
106
  {}
107
107
  end
108
108
  end
109
109
  end
110
-
110
+
111
111
  module ShellExtension
112
112
  include Extension
113
-
113
+
114
114
  first_time do
115
115
  Project.local_task 'shell'
116
-
116
+
117
117
  ShellProviders.each { |p| Project.local_task "shell:#{p.to_sym}" } # TODO not working
118
118
  end
119
-
120
- before_define do |project|
119
+
120
+ before_define(:shell => :compile) do |project|
121
121
  ShellProviders.each do |p|
122
122
  name = p.to_sym
123
-
123
+
124
124
  trace "Defining task #{project.name}:shell:#{name}"
125
-
125
+
126
126
  p_inst = p.new project
127
127
  deps = if p_inst.build? then [:compile] else [] end
128
-
128
+
129
129
  project.task "shell:#{name}" => deps do
130
130
  trace "Launching #{name} shell"
131
131
  p_inst.launch
132
132
  end
133
133
  end
134
134
  end
135
-
136
- after_define do |project|
135
+
136
+ after_define(:shell => :compile) do |project|
137
137
  default_shell = project.shell.using
138
-
138
+
139
139
  if default_shell
140
140
  dep = "shell:#{default_shell.to_sym}"
141
-
141
+
142
142
  trace "Defining task shell based on #{dep}"
143
143
  project.task :shell => dep
144
144
  else
@@ -147,12 +147,12 @@ module Buildr
147
147
  end
148
148
  end
149
149
  end
150
-
150
+
151
151
  class ShellConfig
152
152
  def initialize(project)
153
153
  @project = project
154
154
  end
155
-
155
+
156
156
  def using(*args)
157
157
  if args.size > 0
158
158
  @using ||= args.first
@@ -160,20 +160,20 @@ module Buildr
160
160
  @using ||= find_shell_task
161
161
  end
162
162
  end
163
-
163
+
164
164
  private
165
165
  def find_shell_task
166
166
  lang = @project.compile.language
167
167
  ShellProviders.providers[lang]
168
168
  end
169
169
  end
170
-
170
+
171
171
  # TODO temporary hack
172
172
  def shell
173
173
  @shell ||= ShellConfig.new self
174
174
  end
175
175
  end
176
-
176
+
177
177
  class Project
178
178
  include ShellExtension
179
179
  end
data/lib/buildr.rb CHANGED
@@ -14,7 +14,7 @@
14
14
  # the License.
15
15
 
16
16
  module Buildr
17
- VERSION = '1.3.5'.freeze
17
+ VERSION = '1.4.0'.freeze
18
18
  end
19
19
 
20
20
  require 'buildr/core'
@@ -0,0 +1,113 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+ desc "Create JRuby all-in-one distribution"
17
+ task "all-in-one" => 'all-in-one:all-in-one'
18
+
19
+ namespace :'all-in-one' do
20
+
21
+ version = "1.5.1"
22
+ jruby_distro = "jruby-bin-#{version}.tar.gz"
23
+ url = "http://jruby.org.s3.amazonaws.com/downloads/#{version}/#{jruby_distro}"
24
+ dir = "jruby-#{version}"
25
+
26
+ task "all-in-one" => [:gem,
27
+ # Prepare to run
28
+ :prepare,
29
+ # Download and extract JRuby
30
+ :download_and_extract,
31
+ # Cleanup JRuby distribution
32
+ :clean_dist,
33
+ # Install Buildr gem and dependencies
34
+ :install_dependencies,
35
+ # Add Buildr executables/scripts
36
+ :add_execs,
37
+ # Package distribution
38
+ :package
39
+ ]
40
+
41
+ desc 'Prepare to run'
42
+ task :prepare do
43
+ mkpath '_all-in-one'
44
+ cd '_all-in-one'
45
+ end
46
+
47
+ desc 'Download and extract JRuby'
48
+ task :download_and_extract do
49
+ unless File.exist? jruby_distro
50
+ puts "Downloading JRuby from #{url} ..."
51
+ sh 'wget', url
52
+ puts "[X] Downloaded JRuby"
53
+ end
54
+
55
+ rm_rf dir if File.exist? dir
56
+
57
+ puts "Extracting JRuby to #{dir} ..."
58
+ sh 'tar', 'xzf', jruby_distro
59
+ puts "[X] Extracted JRuby"
60
+ cd dir
61
+ end
62
+
63
+ desc 'Cleanup JRuby distribution'
64
+ task :clean_dist do
65
+ puts 'Cleaning...'
66
+ rm_rf 'docs'
67
+ mkpath 'jruby-docs'
68
+ mv Dir["COPYING*"], 'jruby-docs'
69
+ mv Dir["LICENSE*"], 'jruby-docs'
70
+ mv 'README', 'jruby-docs'
71
+ rm_rf 'lib/ruby/1.9'
72
+ rm_rf 'lib/ruby/gems/1.8/doc'
73
+ rm_rf 'samples'
74
+ rm_rf 'share'
75
+ end
76
+
77
+ desc 'Install Buildr gem and dependencies'
78
+ task :install_dependencies do
79
+ puts "Install Buildr gem ..."
80
+ sh "bin/jruby", '-S', 'gem', 'install', FileList['../../pkg/*-java.gem'].first,
81
+ '--no-rdoc', '--no-ri'
82
+ puts "[X] Install Buildr gem"
83
+ end
84
+
85
+ desc 'Add Buildr executables/scripts'
86
+ task :add_execs do
87
+ cp 'bin/jruby.exe', 'bin/_buildr.exe'
88
+ cp Dir["../../all-in-one/*"], 'bin'
89
+ end
90
+
91
+ desc 'Package distribution'
92
+ task :package do
93
+ puts "Zipping distribution ..."
94
+ cd '..'
95
+ new_dir = "#{spec.name}-#{spec.version}"
96
+ mv dir, new_dir
97
+ zip = "#{new_dir}.zip"
98
+ rm zip if File.exist? zip
99
+ sh 'zip', '-q', '-r', zip, new_dir
100
+ puts "[X] Zipped distribution"
101
+
102
+ puts "Tarring distribution ..."
103
+ tar = "#{new_dir}.tar.gz"
104
+ rm tar if File.exist? tar
105
+ sh 'tar', 'czf', tar, new_dir
106
+ puts "[X] Tarred distribution"
107
+
108
+ rm_rf new_dir
109
+ end
110
+
111
+ end
112
+
113
+ task(:clobber) { rm_rf '_all-in-one' }
data/rakelib/checks.rake CHANGED
@@ -18,7 +18,7 @@ desc "Check that source files contain the Apache license"
18
18
  task :license=>FileList["**/*.{rb,rake,java,gemspec,buildfile}", 'Rakefile'] do |task|
19
19
  puts "Checking that files contain the Apache license ... "
20
20
  required = task.prerequisites.select { |fn| File.file?(fn) }
21
- missing = required.reject { |fn|
21
+ missing = required.reject { |fn|
22
22
  comments = File.read(fn).scan(/(\/\*(.*?)\*\/)|^#\s+(.*?)$|^-#\s+(.*?)$|<!--(.*?)-->/m).
23
23
  map { |match| match.compact }.flatten.join("\n")
24
24
  comments =~ /Licensed to the Apache Software Foundation/ && comments =~ /http:\/\/www.apache.org\/licenses\/LICENSE-2.0/