buildr 1.3.5-x86-mswin32 → 1.4.0-x86-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +153 -8
- data/README.rdoc +1 -1
- data/addon/buildr/antlr.rb +5 -5
- data/addon/buildr/drb.rb +18 -18
- data/addon/buildr/hibernate.rb +18 -14
- data/addon/buildr/javacc.rb +4 -4
- data/addon/buildr/jetty.rb +5 -5
- data/addon/buildr/nailgun.rb +23 -23
- data/addon/buildr/openjpa.rb +1 -1
- data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
- data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
- data/addon/buildr/protobuf.rb +75 -0
- data/addon/buildr/xmlbeans.rb +5 -5
- data/buildr.buildfile +2 -2
- data/buildr.gemspec +8 -7
- data/doc/_layouts/default.html +2 -2
- data/doc/artifacts.textile +4 -4
- data/doc/building.textile +35 -3
- data/doc/contributing.textile +5 -0
- data/doc/download.textile +16 -5
- data/doc/extending.textile +38 -12
- data/doc/installing.textile +6 -5
- data/doc/languages.textile +182 -42
- data/doc/more_stuff.textile +2 -2
- data/doc/packaging.textile +14 -15
- data/doc/projects.textile +7 -2
- data/doc/quick_start.textile +4 -4
- data/doc/scripts/buildr-git.rb +63 -63
- data/doc/scripts/gitflow.rb +21 -21
- data/doc/settings_profiles.textile +9 -2
- data/doc/testing.textile +16 -5
- data/etc/KEYS +38 -0
- data/lib/buildr.rb +1 -1
- data/lib/buildr/core.rb +1 -0
- data/lib/buildr/core/application.rb +33 -27
- data/lib/buildr/core/build.rb +41 -28
- data/lib/buildr/core/cc.rb +172 -0
- data/lib/buildr/core/checks.rb +1 -1
- data/lib/buildr/core/common.rb +7 -6
- data/lib/buildr/core/compile.rb +7 -8
- data/lib/buildr/core/doc.rb +263 -0
- data/lib/buildr/core/environment.rb +6 -6
- data/lib/buildr/core/filter.rb +77 -35
- data/lib/buildr/core/generate.rb +7 -7
- data/lib/buildr/core/help.rb +1 -1
- data/lib/buildr/core/osx.rb +6 -6
- data/lib/buildr/core/progressbar.rb +4 -4
- data/lib/buildr/core/project.rb +144 -36
- data/lib/buildr/core/shell.rb +34 -34
- data/lib/buildr/core/test.rb +89 -20
- data/lib/buildr/core/transports.rb +8 -7
- data/lib/buildr/core/util.rb +77 -23
- data/lib/buildr/groovy/bdd.rb +5 -5
- data/lib/buildr/groovy/compiler.rb +19 -15
- data/lib/buildr/groovy/shell.rb +6 -6
- data/lib/buildr/ide/eclipse.rb +148 -75
- data/lib/buildr/ide/eclipse/java.rb +3 -3
- data/lib/buildr/ide/eclipse/plugin.rb +8 -5
- data/lib/buildr/ide/eclipse/scala.rb +4 -2
- data/lib/buildr/ide/idea.rb +2 -2
- data/lib/buildr/ide/idea7x.rb +23 -4
- data/lib/buildr/java.rb +1 -0
- data/lib/buildr/java/ant.rb +4 -4
- data/lib/buildr/java/bdd.rb +51 -54
- data/lib/buildr/java/cobertura.rb +57 -35
- data/lib/buildr/java/commands.rb +14 -5
- data/lib/buildr/java/compiler.rb +3 -217
- data/lib/buildr/java/deprecated.rb +4 -4
- data/lib/buildr/java/doc.rb +70 -0
- data/lib/buildr/java/emma.rb +22 -22
- data/lib/buildr/java/jruby.rb +4 -4
- data/lib/buildr/java/jtestr_runner.rb.erb +27 -25
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +8 -3
- data/lib/buildr/java/packaging.rb +30 -29
- data/lib/buildr/java/pom.rb +4 -4
- data/lib/buildr/java/rjb.rb +6 -6
- data/lib/buildr/java/test_result.rb +61 -85
- data/lib/buildr/java/tests.rb +44 -27
- data/lib/buildr/java/version_requirement.rb +8 -8
- data/lib/buildr/packaging/archive.rb +55 -22
- data/lib/buildr/packaging/artifact.rb +75 -36
- data/lib/buildr/packaging/artifact_namespace.rb +90 -78
- data/lib/buildr/packaging/artifact_search.rb +5 -5
- data/lib/buildr/packaging/gems.rb +11 -7
- data/lib/buildr/packaging/package.rb +10 -7
- data/lib/buildr/packaging/tar.rb +14 -14
- data/lib/buildr/packaging/version_requirement.rb +30 -10
- data/lib/buildr/packaging/ziptask.rb +51 -13
- data/lib/buildr/scala.rb +1 -0
- data/lib/buildr/scala/bdd.rb +25 -20
- data/lib/buildr/scala/compiler.rb +87 -40
- data/lib/buildr/scala/doc.rb +106 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
- data/lib/buildr/scala/shell.rb +14 -9
- data/lib/buildr/scala/tests.rb +33 -26
- data/lib/buildr/shell.rb +33 -33
- data/rakelib/all-in-one.rake +113 -0
- data/rakelib/checks.rake +1 -1
- data/rakelib/doc.rake +7 -0
- data/rakelib/package.rake +1 -1
- data/rakelib/release.rake +9 -6
- data/rakelib/rspec.rake +26 -7
- data/rakelib/setup.rake +15 -3
- data/rakelib/stage.rake +18 -11
- data/spec/addon/drb_spec.rb +25 -25
- data/spec/core/application_spec.rb +111 -21
- data/spec/core/build_spec.rb +16 -15
- data/spec/core/cc_spec.rb +174 -0
- data/spec/core/checks_spec.rb +34 -34
- data/spec/core/common_spec.rb +51 -5
- data/spec/core/compile_spec.rb +89 -14
- data/spec/core/extension_spec.rb +127 -19
- data/spec/core/generate_spec.rb +2 -2
- data/spec/core/project_spec.rb +10 -10
- data/spec/core/test_spec.rb +144 -35
- data/spec/core/transport_spec.rb +8 -8
- data/spec/core/util_spec.rb +63 -5
- data/spec/groovy/bdd_spec.rb +5 -5
- data/spec/groovy/compiler_spec.rb +29 -18
- data/spec/ide/eclipse_spec.rb +185 -9
- data/spec/ide/idea7x_spec.rb +22 -10
- data/spec/java/ant_spec.rb +9 -5
- data/spec/java/bdd_spec.rb +29 -37
- data/spec/java/cobertura_spec.rb +12 -12
- data/spec/java/commands_spec.rb +34 -0
- data/spec/java/compiler_spec.rb +53 -53
- data/spec/java/emma_spec.rb +11 -11
- data/spec/java/java_spec.rb +10 -10
- data/spec/java/packaging_spec.rb +67 -20
- data/spec/java/test_coverage_helper.rb +18 -18
- data/spec/java/tests_spec.rb +13 -9
- data/spec/packaging/archive_spec.rb +187 -20
- data/spec/packaging/artifact_namespace_spec.rb +172 -83
- data/spec/packaging/artifact_spec.rb +83 -18
- data/spec/packaging/packaging_spec.rb +41 -14
- data/spec/sandbox.rb +23 -12
- data/spec/scala/bdd_spec.rb +13 -8
- data/spec/scala/compiler_spec.rb +18 -13
- data/spec/scala/scala.rb +3 -3
- data/spec/scala/tests_spec.rb +46 -24
- data/spec/spec_helpers.rb +28 -10
- data/spec/version_requirement_spec.rb +25 -11
- metadata +149 -133
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +0 -35
- data/rakelib/stage.rake~ +0 -213
@@ -18,7 +18,7 @@ require 'buildr/packaging/version_requirement'
|
|
18
18
|
|
19
19
|
|
20
20
|
module Buildr
|
21
|
-
|
21
|
+
|
22
22
|
# An ArtifactNamespace is a hierarchical dictionary used to manage ArtifactRequirements.
|
23
23
|
# It can be used to have different artifact versions per project
|
24
24
|
# or to allow users to select a version for addons or modules.
|
@@ -31,27 +31,27 @@ module Buildr
|
|
31
31
|
# The method_missing method for instances provides some syntactic sugar to these.
|
32
32
|
# See the following examples, and the methods for ArtifactRequirement.
|
33
33
|
#
|
34
|
-
# = Avoiding constant
|
34
|
+
# = Avoiding constant pollution on buildfile
|
35
35
|
#
|
36
|
-
# Each project has its own ArtifactNamespace inheriting the one from the
|
36
|
+
# Each project has its own ArtifactNamespace inheriting the one from the
|
37
37
|
# parent project up to the root namespace.
|
38
|
-
#
|
39
|
-
# Consider the following snippet, as project grows, each subproject
|
40
|
-
# may need
|
38
|
+
#
|
39
|
+
# Consider the following snippet, as project grows, each subproject
|
40
|
+
# may need different artifact combinations and/or versions. Assigning
|
41
41
|
# artifact specifications to constants can make it painful to maintain
|
42
42
|
# their references even if using structs/hashes.
|
43
43
|
#
|
44
44
|
# -- buildfile --
|
45
45
|
# SPRING = 'org.springframework:spring:jar:2.5'
|
46
46
|
# SPRING_OLD = 'org.springframework:spring:jar:1.0'
|
47
|
-
# LOGGING = ['comons-logging:commons-logging:jar:1.1.1',
|
47
|
+
# LOGGING = ['comons-logging:commons-logging:jar:1.1.1',
|
48
48
|
# 'log4j:log4j:jar:1.2.15']
|
49
49
|
# WL_LOGGING = artifact('bea:wlcommons-logging:jar:8.1').from('path/to/wlcommons-logging.jar')
|
50
|
-
# LOGGING_WEBLOGIC = ['comons-logging:commons-logging:jar:1.1.1',
|
50
|
+
# LOGGING_WEBLOGIC = ['comons-logging:commons-logging:jar:1.1.1',
|
51
51
|
# WL_LOGGING]
|
52
52
|
# COMMONS = struct :collections => 'commons-collection:commons-collection:jar:3.1',
|
53
53
|
# :net => 'commons-net:commons-net:jar:1.4.0'
|
54
|
-
#
|
54
|
+
#
|
55
55
|
# define 'example1' do
|
56
56
|
# define 'one' do
|
57
57
|
# compile.with SPRING, LOGGING_WEBLOGIC, COMMONS
|
@@ -64,11 +64,11 @@ module Buildr
|
|
64
64
|
# end
|
65
65
|
# end
|
66
66
|
#
|
67
|
-
#
|
67
|
+
#
|
68
68
|
# With ArtifactNamespace you can do some more advanced stuff, the following
|
69
69
|
# annotated snipped could still be reduced if default artifact definitions were
|
70
|
-
# loaded from yaml file (see section
|
71
|
-
#
|
70
|
+
# loaded from yaml file (see section below and ArtifactNamespace.load).
|
71
|
+
#
|
72
72
|
# -- buildfile --
|
73
73
|
# artifact_ns do |ns| # the current namespace (root if called outside a project)
|
74
74
|
# # default artifacts
|
@@ -83,15 +83,15 @@ module Buildr
|
|
83
83
|
# :logging => 'comons-logging:commons-logging:jar:1.1.1'
|
84
84
|
#
|
85
85
|
#
|
86
|
-
# # When a child namespace asks for the :log artifact,
|
86
|
+
# # When a child namespace asks for the :log artifact,
|
87
87
|
# # these artifacts will be searched starting from the :current namespace.
|
88
88
|
# ns.virtual :log, :logger, :commons_logging
|
89
89
|
# end
|
90
|
-
#
|
90
|
+
#
|
91
91
|
# artifact_ns('example2:one') do |ns| # namespace for the one subproject
|
92
92
|
# ns.logger = artifact('bea:wlcommons-logging:jar:8.1').from('path/to/wlcommons-logging.jar')
|
93
93
|
# end
|
94
|
-
# artifact_ns('example2:two') do |ns|
|
94
|
+
# artifact_ns('example2:two') do |ns|
|
95
95
|
# ns.spring = '1.0' # for project two use an older spring version (just for an example)
|
96
96
|
# end
|
97
97
|
# artifact_ns('example2:three').commons_collections = 2.2'
|
@@ -100,8 +100,8 @@ module Buildr
|
|
100
100
|
# ns.ns(:compilation).use :commons_logging, :beanutils, :spring # compile time dependencies
|
101
101
|
# ns.ns(:testing).use :log, :beanutils, 'cglib:cglib-nodep:jar:2.1.3' # run time dependencies
|
102
102
|
# end
|
103
|
-
#
|
104
|
-
# define 'example2' do
|
103
|
+
#
|
104
|
+
# define 'example2' do
|
105
105
|
# define 'one' do
|
106
106
|
# compile.with :spring, :log, :commons # uses weblogic logging
|
107
107
|
# end
|
@@ -130,14 +130,14 @@ module Buildr
|
|
130
130
|
# An example usage is documented on the ArtifactNamespace.load method.
|
131
131
|
#
|
132
132
|
# = For addon/plugin writers & Customizing artifact versions
|
133
|
-
#
|
133
|
+
#
|
134
134
|
# Sometimes users would need to change the default artifact versions used by some
|
135
135
|
# module, for example, the XMLBeans compiler needs this, because of compatibility
|
136
136
|
# issues. Another example would be to select the groovy version to use on all our
|
137
137
|
# projects so that Buildr modules requiring groovy jars can use user prefered versions.
|
138
138
|
#
|
139
|
-
# To meet this goal, an ArtifactNamespace allows to specify
|
140
|
-
# In fact the only
|
139
|
+
# To meet this goal, an ArtifactNamespace allows to specify ArtifactRequirement objects.
|
140
|
+
# In fact the only difference with the examples you have already seen is that requirements
|
141
141
|
# have an associated VersionRequirement, so that each time a user tries to select a version,
|
142
142
|
# buildr checks if it satisfies the requirements.
|
143
143
|
#
|
@@ -145,14 +145,14 @@ module Buildr
|
|
145
145
|
# syntactic sugar is provided by ArtifactNamespace#method_missing.
|
146
146
|
#
|
147
147
|
# The following example is taken from the XMLBeans compiler module.
|
148
|
-
# And illustrates how addon authors should specify their requirements,
|
148
|
+
# And illustrates how addon authors should specify their requirements,
|
149
149
|
# provide default versions, and document the namespace for users to customize.
|
150
|
-
#
|
150
|
+
#
|
151
151
|
# module Buildr::XMLBeans
|
152
152
|
#
|
153
153
|
# # You need to document this constant, giving users some hints
|
154
|
-
# # about when are (maybe some of) these artifacts used. I mean,
|
155
|
-
# # some modules, add jars to the Buildr classpath when its file
|
154
|
+
# # about when are (maybe some of) these artifacts used. I mean,
|
155
|
+
# # some modules, add jars to the Buildr classpath when its file
|
156
156
|
# # is required, you would need to tell your users, so that they
|
157
157
|
# # can open the namespace and specify their defaults. Of course
|
158
158
|
# # when the requirements are defined, buildr checks if any compatible
|
@@ -174,29 +174,29 @@ module Buildr
|
|
174
174
|
# ns.need " some_name -> ar:ti:fact:3.2.5 -> ( >2 & <4)"
|
175
175
|
#
|
176
176
|
# # As you can see it's just an artifact spec, prefixed with
|
177
|
-
# # ' some_name -> ', this means users can use that name to
|
177
|
+
# # ' some_name -> ', this means users can use that name to
|
178
178
|
# # reference the requirement, also this string has a VersionRequirement
|
179
179
|
# # just after another ->.
|
180
180
|
# end
|
181
181
|
#
|
182
|
-
# # The REQUIRES constant is an ArtifactNamespace instance,
|
183
|
-
# # that means we can use it directly. Note that calling
|
182
|
+
# # The REQUIRES constant is an ArtifactNamespace instance,
|
183
|
+
# # that means we can use it directly. Note that calling
|
184
184
|
# # Buildr.artifact_ns would lead to the currently executing context,
|
185
185
|
# # not the one for this module.
|
186
186
|
# def use
|
187
187
|
# # test if user specified his own version, if so, we could perform some
|
188
188
|
# # functionallity based on this.
|
189
|
-
# REQUIRES.some_name.selected? # => false
|
190
|
-
#
|
189
|
+
# REQUIRES.some_name.selected? # => false
|
190
|
+
#
|
191
191
|
# REQUIRES.some_name.satisfied_by?('1.5') # => false
|
192
192
|
# puts REQUIRES.some_name.requirement # => ( >2 & <4 )
|
193
193
|
#
|
194
194
|
# REQUIRES.artifacts # get the Artifact tasks
|
195
195
|
# end
|
196
196
|
#
|
197
|
-
# end
|
197
|
+
# end
|
198
198
|
#
|
199
|
-
# A more advanced example using ArtifactRequirement listeners is included
|
199
|
+
# A more advanced example using ArtifactRequirement listeners is included
|
200
200
|
# in the artifact_namespace_spec.rb description for 'Extension using ArtifactNamespace'
|
201
201
|
# That's it for addon writers, now, users can select their prefered version with
|
202
202
|
# something like:
|
@@ -210,8 +210,8 @@ module Buildr
|
|
210
210
|
#
|
211
211
|
# Buildr::XMLBeans::REQUIRES.parent = :current
|
212
212
|
#
|
213
|
-
# Now, provided that the compiler does not caches its artifacts, it will
|
214
|
-
# select the correct version. (See the first section for how to select per project
|
213
|
+
# Now, provided that the compiler does not caches its artifacts, it will
|
214
|
+
# select the correct version. (See the first section for how to select per project
|
215
215
|
# artifacts).
|
216
216
|
#
|
217
217
|
#
|
@@ -224,7 +224,7 @@ module Buildr
|
|
224
224
|
const_set(:ROOT, new('root'))
|
225
225
|
end
|
226
226
|
|
227
|
-
# Populate namespaces from a hash of hashes.
|
227
|
+
# Populate namespaces from a hash of hashes.
|
228
228
|
# The following example uses the profiles yaml to achieve this.
|
229
229
|
#
|
230
230
|
# -- profiles.yaml --
|
@@ -235,8 +235,8 @@ module Buildr
|
|
235
235
|
# groovy: org.codehaus.groovy:groovy:jar:1.5.4
|
236
236
|
# logging: # define a named group
|
237
237
|
# - log4j:log4j:jar:1.2.15
|
238
|
-
# - commons-logging:commons-logging:1.1.1
|
239
|
-
#
|
238
|
+
# - commons-logging:commons-logging:jar:1.1.1
|
239
|
+
#
|
240
240
|
# # open Buildr::XMLBeans namespace
|
241
241
|
# Buildr::XMLBeans:
|
242
242
|
# xmlbeans: 2.2
|
@@ -246,11 +246,11 @@ module Buildr
|
|
246
246
|
# spring: org.springframework:spring:jar:1.0
|
247
247
|
#
|
248
248
|
# -- buildfile --
|
249
|
-
# ArtifactNamespace.load(Buildr.profile['artifacts'])
|
249
|
+
# ArtifactNamespace.load(Buildr.settings.profile['artifacts'])
|
250
250
|
def load(namespaces = {})
|
251
251
|
namespaces.each_pair { |name, uses| instance(name).use(uses) }
|
252
252
|
end
|
253
|
-
|
253
|
+
|
254
254
|
# :call-seq:
|
255
255
|
# ArtifactNamespace.instance { |current_ns| ... } -> current_ns
|
256
256
|
# ArtifactNamespace.instance(name) { |ns| ... } -> ns
|
@@ -274,17 +274,20 @@ module Buildr
|
|
274
274
|
end
|
275
275
|
end
|
276
276
|
name = name.to_s
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
277
|
+
if name.size == 0
|
278
|
+
instance = ROOT
|
279
|
+
else
|
280
|
+
name = name.to_s
|
281
|
+
@instances ||= Hash.new { |h, k| h[k] = new(k) }
|
282
|
+
instance = @instances[name]
|
283
|
+
end
|
281
284
|
yield(instance) if block_given?
|
282
285
|
instance
|
283
286
|
end
|
284
287
|
|
285
288
|
alias_method :[], :instance
|
286
289
|
alias_method :for, :instance
|
287
|
-
|
290
|
+
|
288
291
|
# :call-seq:
|
289
292
|
# ArtifactNamespace.root { |ns| ... } -> ns
|
290
293
|
#
|
@@ -296,9 +299,9 @@ module Buildr
|
|
296
299
|
end
|
297
300
|
|
298
301
|
module DClone #:nodoc:
|
299
|
-
def dclone
|
302
|
+
def dclone
|
300
303
|
clone = self.clone
|
301
|
-
clone.instance_variables.each do |i|
|
304
|
+
clone.instance_variables.each do |i|
|
302
305
|
value = clone.instance_variable_get(i)
|
303
306
|
value = value.dclone rescue
|
304
307
|
clone.instance_variable_set(i, value)
|
@@ -325,7 +328,7 @@ module Buildr
|
|
325
328
|
end
|
326
329
|
obj
|
327
330
|
end
|
328
|
-
|
331
|
+
|
329
332
|
def aliases(name)
|
330
333
|
return [] unless name
|
331
334
|
name = name.to_sym
|
@@ -338,7 +341,7 @@ module Buildr
|
|
338
341
|
end
|
339
342
|
|
340
343
|
def get(key, include_parent = nil)
|
341
|
-
[].tap { |a| aliases(key).select { |n| a[0] = self[n] } }.first ||
|
344
|
+
[].tap { |a| aliases(key).select { |n| a[0] = self[n] } }.first ||
|
342
345
|
(include_parent && parent && parent.get(key, include_parent))
|
343
346
|
end
|
344
347
|
|
@@ -361,17 +364,17 @@ module Buildr
|
|
361
364
|
end
|
362
365
|
|
363
366
|
# An artifact requirement is an object that ActsAsArtifact and has
|
364
|
-
# an associated VersionRequirement. It also knows the name (some times equal to the
|
367
|
+
# an associated VersionRequirement. It also knows the name (some times equal to the
|
365
368
|
# artifact id) that is used to store it in an ArtifactNamespace.
|
366
369
|
class ArtifactRequirement
|
367
370
|
attr_accessor :version
|
368
371
|
attr_reader :name, :requirement
|
369
372
|
|
370
373
|
include DClone
|
371
|
-
|
374
|
+
|
372
375
|
# Create a requirement from an `artifact requirement spec`.
|
373
|
-
# This spec has three parts, separated by ->
|
374
|
-
#
|
376
|
+
# This spec has three parts, separated by ->
|
377
|
+
#
|
375
378
|
# some_name -> ar:ti:fact:3.2.5 -> ( >2 & <4)
|
376
379
|
#
|
377
380
|
# As you can see it's just an artifact spec, prefixed with
|
@@ -387,7 +390,7 @@ module Buildr
|
|
387
390
|
#
|
388
391
|
# The last part consist of a VersionRequirement.
|
389
392
|
# -> ( >2 & <4)
|
390
|
-
#
|
393
|
+
#
|
391
394
|
# VersionRequirement supports RubyGem's comparision operators
|
392
395
|
# in adition to parens, logical and, logical or and negation.
|
393
396
|
# See the docs for VersionRequirement for more info on operators.
|
@@ -416,7 +419,7 @@ module Buildr
|
|
416
419
|
def name=(name)
|
417
420
|
@name = name.to_s
|
418
421
|
end
|
419
|
-
|
422
|
+
|
420
423
|
# Set a the requirement, this must be an string formatted for
|
421
424
|
# VersionRequirement#create to parse.
|
422
425
|
def requirement=(version_requirement)
|
@@ -426,7 +429,7 @@ module Buildr
|
|
426
429
|
# Return a hash consisting of :name, :spec, :requirement
|
427
430
|
def requirement_hash(spec = self)
|
428
431
|
result = {}
|
429
|
-
if String === spec
|
432
|
+
if String === spec
|
430
433
|
parts = spec.split(/\s*->\s*/, 3).map(&:strip)
|
431
434
|
case parts.size
|
432
435
|
when 1
|
@@ -451,7 +454,7 @@ module Buildr
|
|
451
454
|
result[:requirement] ||= VersionRequirement.create(result[:spec][:version])
|
452
455
|
result
|
453
456
|
end
|
454
|
-
|
457
|
+
|
455
458
|
# Test if this requirement is satisfied by an artifact spec.
|
456
459
|
def satisfied_by?(spec)
|
457
460
|
return false unless requirement
|
@@ -502,7 +505,7 @@ module Buildr
|
|
502
505
|
ary = ary[0...-1] if ary.size > 3
|
503
506
|
ary.join(':')
|
504
507
|
end
|
505
|
-
|
508
|
+
|
506
509
|
class << self
|
507
510
|
# Return an artifact spec without the version part.
|
508
511
|
def unversioned_spec(spec)
|
@@ -522,16 +525,17 @@ module Buildr
|
|
522
525
|
include DClone
|
523
526
|
include Enumerable
|
524
527
|
attr_reader :name
|
525
|
-
|
528
|
+
|
526
529
|
def initialize(name = nil) #:nodoc:
|
527
530
|
@name = name.to_s if name
|
528
531
|
end
|
529
532
|
clear
|
530
|
-
|
533
|
+
|
531
534
|
def root
|
535
|
+
yield ROOT if block_given?
|
532
536
|
ROOT
|
533
537
|
end
|
534
|
-
|
538
|
+
|
535
539
|
# ROOT namespace has no parent
|
536
540
|
def parent
|
537
541
|
if root?
|
@@ -547,22 +551,22 @@ module Buildr
|
|
547
551
|
root
|
548
552
|
end
|
549
553
|
end
|
550
|
-
|
554
|
+
|
551
555
|
# Set the parent for the current namespace, except if it is ROOT
|
552
556
|
def parent=(other)
|
553
557
|
raise 'Cannot set parent of root namespace' if root?
|
554
558
|
@parent = other
|
555
559
|
@registry = nil
|
556
560
|
end
|
557
|
-
|
561
|
+
|
558
562
|
# Is this the ROOT namespace?
|
559
563
|
def root?
|
560
564
|
ROOT == self
|
561
565
|
end
|
562
566
|
|
563
|
-
# Create a named sub-namespace, sub-namespaces are themselves
|
567
|
+
# Create a named sub-namespace, sub-namespaces are themselves
|
564
568
|
# ArtifactNamespace instances but cannot be referenced by
|
565
|
-
# the Buildr.artifact_ns, ArtifactNamespace.instance methods.
|
569
|
+
# the Buildr.artifact_ns, ArtifactNamespace.instance methods.
|
566
570
|
# Reference needs to be through this object using the given +name+
|
567
571
|
#
|
568
572
|
# artifact_ns('foo').ns(:bar).need :thing => 'some:thing:jar:1.0'
|
@@ -617,7 +621,7 @@ module Buildr
|
|
617
621
|
end
|
618
622
|
named.each_pair do |name, artifact|
|
619
623
|
if Array === artifact # a group
|
620
|
-
artifact.each do |a|
|
624
|
+
artifact.each do |a|
|
621
625
|
unvers = a.unversioned_spec
|
622
626
|
previous = registry[unvers]
|
623
627
|
if previous && previous.selected? && a.satisfied_by?(previous)
|
@@ -645,7 +649,7 @@ module Buildr
|
|
645
649
|
# artifact_ns.use :name => 'org:foo:bar:jar:1.2.3'
|
646
650
|
# artifact_ns.use :name => '2.5.6'
|
647
651
|
#
|
648
|
-
# First and second form are equivalent, the third is used when an
|
652
|
+
# First and second form are equivalent, the third is used when an
|
649
653
|
# ArtifactRequirement has been previously defined with :name, so it
|
650
654
|
# just selects the version.
|
651
655
|
#
|
@@ -686,7 +690,7 @@ module Buildr
|
|
686
690
|
is_group = Array === artifact
|
687
691
|
artifact = [artifact].flatten.map do |artifact|
|
688
692
|
unvers = artifact.unversioned_spec
|
689
|
-
previous = get(unvers, false) || get(name, false)
|
693
|
+
previous = get(unvers, false) || get(name, false)
|
690
694
|
if previous # have previous on current namespace
|
691
695
|
if previous.requirement # we must satisfy the requirement
|
692
696
|
unless unvers # we only have the version
|
@@ -697,7 +701,7 @@ module Buildr
|
|
697
701
|
raise "Unsatisfied dependency #{previous} " +
|
698
702
|
"not satisfied by #{artifact}" unless satisfied
|
699
703
|
previous.version = artifact.version # OK, set new version
|
700
|
-
artifact = previous # use the same object for aliases
|
704
|
+
artifact = previous # use the same object for aliases
|
701
705
|
else # not a requirement, set the new values
|
702
706
|
unless artifact.id == previous.id && name != previous.name
|
703
707
|
previous.copy_attrs(artifact)
|
@@ -711,13 +715,13 @@ module Buildr
|
|
711
715
|
artifact.copy_attrs(previous)
|
712
716
|
artifact.version = version
|
713
717
|
end
|
714
|
-
artifact.requirement = nil
|
718
|
+
artifact.requirement = nil
|
715
719
|
end
|
716
720
|
artifact.selected!
|
717
721
|
end
|
718
722
|
artifact = artifact.first unless is_group
|
719
723
|
if is_group
|
720
|
-
names = artifact.map do |art|
|
724
|
+
names = artifact.map do |art|
|
721
725
|
unv = art.unversioned_spec
|
722
726
|
registry[unv] = art
|
723
727
|
unv
|
@@ -792,7 +796,7 @@ module Buildr
|
|
792
796
|
|
793
797
|
# Return only the named requirements
|
794
798
|
def values_at(*names)
|
795
|
-
names.map do |name|
|
799
|
+
names.map do |name|
|
796
800
|
catch :artifact do
|
797
801
|
unless name.to_s[/^[\w\-\.]+$/]
|
798
802
|
unvers = ArtifactRequirement.unversioned_spec(name)
|
@@ -816,11 +820,19 @@ module Buildr
|
|
816
820
|
registry.key?(name, include_parents)
|
817
821
|
end
|
818
822
|
|
823
|
+
def keys
|
824
|
+
values.map(&:name)
|
825
|
+
end
|
826
|
+
|
819
827
|
def delete(name, include_parents = false)
|
820
828
|
registry.delete(name, include_parents)
|
821
829
|
self
|
822
830
|
end
|
823
|
-
|
831
|
+
|
832
|
+
def clear
|
833
|
+
keys.each { |k| delete(k) }
|
834
|
+
end
|
835
|
+
|
824
836
|
# :call-seq:
|
825
837
|
# group :who, :me, :you
|
826
838
|
# group :them, :me, :you, :namespace => ns
|
@@ -828,7 +840,7 @@ module Buildr
|
|
828
840
|
# Create a virtual group on this namespace. When the namespace
|
829
841
|
# is asked for the +who+ artifact, it's value is an array made from
|
830
842
|
# the remaining names. These names are searched by default from the current
|
831
|
-
# namespace.
|
843
|
+
# namespace.
|
832
844
|
# Second form specified the starting namespace to search from.
|
833
845
|
def group(group_name, *members)
|
834
846
|
namespace = (Hash === members.last && members.pop[:namespace]) || :current
|
@@ -867,7 +879,7 @@ module Buildr
|
|
867
879
|
# and is equivalent to:
|
868
880
|
# artifact_ns.use :cool_aid => '1.0'
|
869
881
|
#
|
870
|
-
# Third form obtains the named ArtifactRequirement, can be
|
882
|
+
# Third form obtains the named ArtifactRequirement, can be
|
871
883
|
# used to test if a named requirement has been defined.
|
872
884
|
# It is equivalent to:
|
873
885
|
# artifact_ns.fetch(:cool_aid) { nil }
|
@@ -892,7 +904,7 @@ module Buildr
|
|
892
904
|
when /\?$/ then
|
893
905
|
name = $`.gsub(/^(has|have)_/, '').intern
|
894
906
|
[get(name)].flatten.all? { |a| a && a.selected? }
|
895
|
-
else
|
907
|
+
else
|
896
908
|
if block || args.size > 0
|
897
909
|
raise ArgumentError.new("wrong number of arguments #{args.size} for 0 or block given")
|
898
910
|
end
|
@@ -900,7 +912,7 @@ module Buildr
|
|
900
912
|
end
|
901
913
|
end
|
902
914
|
|
903
|
-
# Return an anonymous module
|
915
|
+
# Return an anonymous module
|
904
916
|
# # first create a requirement
|
905
917
|
# artifact_ns.cool_aid! 'cool:aid:jar:>=1.0'
|
906
918
|
#
|
@@ -911,7 +923,7 @@ module Buildr
|
|
911
923
|
# artifact_ns.cool_aid.version # -> '2.0'
|
912
924
|
def accessor(*names)
|
913
925
|
ns = self
|
914
|
-
Module.new do
|
926
|
+
Module.new do
|
915
927
|
names.each do |name|
|
916
928
|
define_method("#{name}") { ns.send("#{name}") }
|
917
929
|
define_method("#{name}?") { ns.send("#{name}?") }
|
@@ -950,7 +962,7 @@ module Buildr
|
|
950
962
|
m.parent = parent.send(:registry) unless root?
|
951
963
|
end
|
952
964
|
end
|
953
|
-
|
965
|
+
|
954
966
|
end # ArtifactNamespace
|
955
967
|
|
956
968
|
# :call-seq:
|
@@ -966,7 +978,7 @@ module Buildr
|
|
966
978
|
name = self if name.nil? && self.kind_of?(Project)
|
967
979
|
ArtifactNamespace.instance(name, &block)
|
968
980
|
end
|
969
|
-
|
981
|
+
|
970
982
|
end
|
971
983
|
|
972
984
|
|