buildr 1.4.1-x86-mswin32 → 1.4.2-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.
Files changed (97) hide show
  1. data/CHANGELOG +68 -11
  2. data/_buildr +2 -0
  3. data/addon/buildr/hibernate.rb +8 -5
  4. data/addon/buildr/jetty.rb +1 -1
  5. data/addon/buildr/openjpa.rb +0 -2
  6. data/addon/buildr/xmlbeans.rb +1 -1
  7. data/buildr.gemspec +13 -9
  8. data/doc/_layouts/default.html +3 -1
  9. data/doc/contributing.textile +10 -2
  10. data/doc/css/default.css +6 -6
  11. data/doc/download.textile +7 -7
  12. data/doc/languages.textile +2 -2
  13. data/doc/more_stuff.textile +41 -33
  14. data/doc/packaging.textile +6 -3
  15. data/doc/releasing.textile +116 -0
  16. data/doc/scripts/install-linux.sh +7 -6
  17. data/doc/testing.textile +14 -0
  18. data/lib/buildr.rb +2 -2
  19. data/lib/buildr/core.rb +0 -6
  20. data/lib/buildr/core/application.rb +25 -2
  21. data/lib/buildr/core/build.rb +66 -15
  22. data/lib/buildr/core/compile.rb +10 -1
  23. data/lib/buildr/core/filter.rb +1 -1
  24. data/lib/buildr/core/progressbar.rb +8 -3
  25. data/lib/buildr/core/test.rb +57 -6
  26. data/lib/buildr/core/transports.rb +18 -13
  27. data/lib/buildr/core/util.rb +19 -3
  28. data/lib/buildr/groovy/compiler.rb +2 -2
  29. data/lib/buildr/ide/eclipse.rb +32 -12
  30. data/lib/buildr/java/ant.rb +3 -3
  31. data/lib/buildr/java/bdd.rb +1 -2
  32. data/lib/buildr/java/cobertura.rb +10 -9
  33. data/lib/buildr/java/commands.rb +22 -21
  34. data/lib/buildr/java/compiler.rb +2 -2
  35. data/lib/buildr/java/doc.rb +1 -1
  36. data/lib/buildr/java/ecj.rb +71 -0
  37. data/lib/buildr/java/emma.rb +1 -1
  38. data/lib/buildr/java/external.rb +9 -9
  39. data/lib/buildr/java/jruby.rb +5 -0
  40. data/lib/buildr/java/packaging.rb +4 -3
  41. data/lib/buildr/java/rjb.rb +4 -6
  42. data/lib/buildr/java/tests.rb +9 -4
  43. data/lib/buildr/packaging/archive.rb +7 -3
  44. data/lib/buildr/packaging/artifact.rb +153 -38
  45. data/lib/buildr/packaging/gems.rb +2 -3
  46. data/lib/buildr/packaging/package.rb +19 -12
  47. data/lib/buildr/packaging/tar.rb +1 -1
  48. data/lib/buildr/packaging/ziptask.rb +1 -1
  49. data/lib/buildr/scala/bdd.rb +7 -3
  50. data/lib/buildr/scala/compiler.rb +2 -2
  51. data/lib/buildr/scala/doc.rb +3 -3
  52. data/lib/buildr/scala/tests.rb +7 -3
  53. data/lib/buildr/version.rb +18 -0
  54. data/rakelib/all-in-one.rake +1 -1
  55. data/rakelib/doc.rake +13 -3
  56. data/rakelib/metrics.rake +39 -0
  57. data/spec/core/application_spec.rb +13 -12
  58. data/spec/core/build_spec.rb +166 -7
  59. data/spec/core/cc_spec.rb +1 -1
  60. data/spec/core/checks_spec.rb +1 -1
  61. data/spec/core/common_spec.rb +10 -1
  62. data/spec/core/compile_spec.rb +1 -1
  63. data/spec/core/extension_spec.rb +1 -1
  64. data/spec/core/generate_spec.rb +1 -1
  65. data/spec/core/project_spec.rb +1 -1
  66. data/spec/core/test_spec.rb +124 -11
  67. data/spec/core/transport_spec.rb +10 -3
  68. data/spec/core/util_spec.rb +18 -2
  69. data/spec/groovy/bdd_spec.rb +1 -1
  70. data/spec/groovy/compiler_spec.rb +3 -3
  71. data/spec/ide/eclipse_spec.rb +63 -1
  72. data/spec/ide/idea7x_spec.rb +1 -1
  73. data/spec/java/ant_spec.rb +1 -1
  74. data/spec/java/bdd_spec.rb +1 -1
  75. data/spec/java/cobertura_spec.rb +29 -2
  76. data/spec/java/commands_spec.rb +61 -2
  77. data/spec/java/compiler_spec.rb +3 -3
  78. data/spec/java/ecj_spec.rb +115 -0
  79. data/spec/java/emma_spec.rb +1 -1
  80. data/spec/java/external_spec.rb +10 -8
  81. data/spec/java/java_spec.rb +14 -6
  82. data/spec/java/packaging_spec.rb +41 -15
  83. data/spec/java/test_coverage_helper.rb +1 -1
  84. data/spec/java/tests_spec.rb +1 -1
  85. data/spec/packaging/archive_spec.rb +12 -1
  86. data/spec/packaging/artifact_namespace_spec.rb +1 -1
  87. data/spec/packaging/artifact_spec.rb +197 -7
  88. data/spec/packaging/packaging_spec.rb +12 -12
  89. data/spec/sandbox.rb +8 -3
  90. data/spec/scala/bdd_spec.rb +3 -3
  91. data/spec/scala/compiler_spec.rb +7 -7
  92. data/spec/scala/scala.rb +3 -3
  93. data/spec/scala/tests_spec.rb +3 -3
  94. data/spec/spec_helpers.rb +11 -1
  95. data/spec/version_requirement_spec.rb +1 -1
  96. metadata +220 -85
  97. data/rakelib/jekylltask.rb +0 -120
@@ -242,7 +242,8 @@ Axis2 service archives are similar to JAR's (compiled classes go into the root o
242
242
 
243
243
  {% highlight ruby %}
244
244
  package(:aar).with(:libs=>'log4j:log4j:jar:1.1')
245
- package(:aar).with(:services_xml=>_('target/services.xml'), :wsdls=>_('target/*.wsdl'))
245
+ package(:aar).with(:services_xml=>_('target/services.xml'),
246
+ :wsdls=>_('target/*.wsdl'))
246
247
  {% endhighlight %}
247
248
 
248
249
  The @libs@ attribute is a list of .jar artifacts to be included in the archive under /lib. The default is no artifacts; compile dependencies are not included by default.
@@ -257,9 +258,11 @@ If you already have WSDL files in the @src/main/axis2@ directory but would like
257
258
  # Host name depends on environment.
258
259
  host = ENV['ENV'] == 'test' ? 'test.host' : 'ws.example.com'
259
260
  filter.from(_('src/main/axis2')).into(_(:target)).
260
- include('services.xml', '==*==.wsdl').using('http_port'=>'8080', 'http_host'=>host)
261
+ include('services.xml', '==*==.wsdl').using('http_port'=>'8080',
262
+ 'http_host'=>host)
261
263
  package(:aar).wsdls.clear
262
- package(:aar).with(:services_xml=>_('target/services.xml'), :wsdls=>_('target/==*==.wsdl'))
264
+ package(:aar).with(:services_xml=>_('target/services.xml'),
265
+ :wsdls=>_('target/==*==.wsdl'))
263
266
  {% endhighlight %}
264
267
 
265
268
 
@@ -0,0 +1,116 @@
1
+ ---
2
+ layout: default
3
+ title: Releasing
4
+ ---
5
+
6
+ Now that we built and test awesome software, let's the world know and release it.
7
+
8
+
9
+ Each buildile can specify the current version with a constant named VERSION_NUMBER or THIS_VERSION.
10
+
11
+ {% highlight ruby %}
12
+ THIS_VERSION = "1.0.0-SNAPSHOT"
13
+
14
+ define 'killer-app' do
15
+
16
+ project.version = THIS_VERSION
17
+
18
+ # ...
19
+ end
20
+ {% endhighlight %}
21
+
22
+
23
+ h2(#default). What does a release do?
24
+
25
+ The default behavior of the Release task is the following:
26
+ # Check that the version to be released and the next version are different
27
+ # Check that the project is being tracked by Git or Subversion
28
+ # Package, test and deploy the artifacts using THIS_VERSION value minus the '-SNAPSHOT' suffix (if any)
29
+ # Tag the repository with the released version number
30
+ # Update the value of THIS_VERSION in the buildfile with the next version number
31
+
32
+ Buildr will increment the last digit of the 3-digit versioni number if THIS_VERSION contains '-SNAPSHOT'.
33
+ So, at the end of a release, the buildfile now looks like this:
34
+
35
+ {% highlight ruby %}
36
+ THIS_VERSION = "1.0.1-SNAPSHOT"
37
+
38
+ define 'killer-app' do
39
+
40
+ project.version = THIS_VERSION
41
+
42
+ # ...
43
+ end
44
+ {% endhighlight %}
45
+
46
+ And the Git repository now contains two new commits and a new tag.
47
+
48
+ {% highlight sh %}
49
+ ~/w/killer-app[master]$git ol -4
50
+ c1af3d5 (HEAD, origin/master, master) Changed version number to 1.0.1-SNAPSHOT
51
+ dd35015 (tag: 1.0.0) Changed version number to 1.0.0
52
+ 76c96e7 Last fix before the release
53
+ {% endhighlight %}
54
+
55
+
56
+ h2(#custom_version). How to specify my own version number scheme?
57
+
58
+ If THIS_VERSION does not contain '-SNAPSHOT', Buildr delegates the resolution of the next version number to the user which has 2 differents ways to express her wishes: Release.next_version or the environment variable NEXT_VERSION.
59
+
60
+ h3(#next_version_proc). Using Release.next_version
61
+
62
+ The Release class can receive the next version of the buildfile. This could be a string or a proc that would receive the current version and return the next version.
63
+
64
+ {% highlight ruby %}
65
+ THIS_VERSION = "1.0.0-SNAPSHOT"
66
+
67
+ # a string
68
+ Release.next_version = "2.0.0-SNAPSHOT"
69
+
70
+ # or a proc
71
+ Release.next_version = lambda do |this_version| # 1.0.0-SNAPSHOT
72
+ new_version = this_version.split(/\./)
73
+ new_version[0] = new_version[0] + 1
74
+ new_version
75
+ end
76
+
77
+ define 'killer-app' do
78
+
79
+ project.version = THIS_VERSION
80
+
81
+ # ...
82
+ end
83
+ {% endhighlight %}
84
+
85
+
86
+ h3(#next_version_envvar). Using the environment variable NEXT_VERSION
87
+
88
+ If the environment variable NEXT_VERSION is set, Buildr will use this value to update THIS_VERSION at the end of the release.
89
+
90
+ For conveniency, this variable is case insensitive.
91
+
92
+ So, all 3 following commands would generate the buildfile below:
93
+ {% highlight sh %}
94
+ $ buildr release next_version="1.0.0-rc1"
95
+ $ env next_version="1.0.0-rc1" buildr release
96
+ $ env NEXT_VERSION="1.0.0-rc1" buildr release
97
+ {% endhighlight %}
98
+
99
+ {% highlight ruby %}
100
+ THIS_VERSION = "1.0.0-rc1"
101
+
102
+ define 'killer-app' do
103
+
104
+ project.version = THIS_VERSION
105
+
106
+ # ...
107
+ end
108
+ {% endhighlight %}
109
+
110
+ The environment variable NEXT_VERSION has precedence over Release.next_version.
111
+
112
+
113
+ h2(#custom_tag_and_msg). How to specify my own tag name and commit message?
114
+
115
+ As explained earlier, Buildr will create two new commits and a new tag in the version control system. Similarly to Release.next_version, the commit message and the tag name can be customized with Release.message and Release.tag_name. Both could be strings or procs that would receive the released version i.i THIS_VERSION without '-SNAPSHOT'.
116
+
@@ -24,15 +24,15 @@ if [ -z `which ruby` ] ; then
24
24
  echo "Installing Ruby using apt-get"
25
25
  # ruby package does not contain RDoc, IRB, etc; ruby-full is a meta-package.
26
26
  # build-essentials not installed by default in Ubuntu, required for C extensions.
27
- sudo apt-get install ruby-full ruby1.8-dev libopenssl-ruby build-essential
27
+ sudo apt-get install ruby-full ruby1.8-dev libopenssl-ruby build-essential
28
28
  # RubyGems broken on Ubuntu, installing directly from source.
29
29
  echo "Installing RubyGems from RubyForge"
30
- wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
31
- tar xzf rubygems-1.3.1.tgz
32
- cd rubygems-1.3.1
30
+ wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz
31
+ tar xzf rubygems-1.3.7.tgz
32
+ cd rubygems-1.3.7
33
33
  sudo ruby setup.rb
34
34
  cd ..
35
- rm -rf rubygems-1.3.1
35
+ rm -rf rubygems-1.3.7
36
36
  # ruby is same as ruby1.8, we need gem that is same as gem1.8
37
37
  sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
38
38
  elif [ `which urpmi` ] ; then
@@ -54,9 +54,10 @@ if [ -z $JAVA_HOME ] ; then
54
54
  exit 1
55
55
  fi
56
56
 
57
- if [ $(gem --version) \< '1.3.1' ] ; then
57
+ if [ $(gem --version) \< '1.3.7' ] ; then
58
58
  echo "Upgrading to latest version of RubyGems"
59
59
  sudo gem update --system
60
+ sudo update_rubygems
60
61
  echo
61
62
  fi
62
63
 
data/doc/testing.textile CHANGED
@@ -98,6 +98,20 @@ Buildr forcefully runs all tests that match the pattern. If you want to re-run
98
98
  $ buildr test:*
99
99
  {% endhighlight %}
100
100
 
101
+ You can exclude tests by preceeding them with a minus sign ('-'):
102
+
103
+ {% highlight sh %}
104
+ $ buildr test:-Bar
105
+ {% endhighlight %}
106
+
107
+ The above would run all tests except those with a name containing @Bar@. Exclusions can be combined with inclusions:
108
+
109
+ {% highlight sh %}
110
+ $ buildr test:Foo,-Bar
111
+ {% endhighlight %}
112
+
113
+ Buildr would then run tests with names containing @Foo@ but not @Bar@.
114
+
101
115
  As you probably noticed, Buildr will stop your build at the first test that fails. We think it's a good idea, except when it's not. If you're using a continuous build system, you'll want a report of all the failed tests without stopping at the first failure. To make that happen, set the environment variable @test@ to "all", or the Buildr @options.test@ option to @:all@. For example:
102
116
 
103
117
  {% highlight sh %}
data/lib/buildr.rb CHANGED
@@ -13,8 +13,8 @@
13
13
  # License for the specific language governing permissions and limitations under
14
14
  # the License.
15
15
 
16
- module Buildr
17
- VERSION = '1.4.1'.freeze
16
+ unless defined?(Buildr::VERSION)
17
+ require 'buildr/version'
18
18
  end
19
19
 
20
20
  require 'buildr/core'
data/lib/buildr/core.rb CHANGED
@@ -13,12 +13,6 @@
13
13
  # License for the specific language governing permissions and limitations under
14
14
  # the License.
15
15
 
16
-
17
- # TODO: Antwrap 0.7 requires this monkeypatch, have it fixed.
18
- class Array #:nodoc:
19
- alias :nitems :size
20
- end
21
-
22
16
  require 'buildr/core/common'
23
17
  require 'buildr/core/application'
24
18
  require 'buildr/core/project'
@@ -343,9 +343,13 @@ module Buildr
343
343
  options.full_description = false
344
344
  }
345
345
  ],
346
- ['--trace', '-t', "Turn on invoke/execute tracing, enable full backtrace.",
346
+ ['--trace', '-t [CATEGORIES]', "Turn on invoke/execute tracing, enable full backtrace.",
347
347
  lambda { |value|
348
348
  options.trace = true
349
+ if value
350
+ options.trace_categories = value.split(',').map { |v| v.downcase.to_sym }
351
+ end
352
+ options.trace_all = options.trace_categories.include? :all
349
353
  verbose(true)
350
354
  }
351
355
  ],
@@ -357,6 +361,18 @@ module Buildr
357
361
  puts "Buildr #{Buildr::VERSION}#{RUBY_PLATFORM[/java/] ? " (JRuby #{JRUBY_VERSION})" : ""}"
358
362
  exit 0
359
363
  }
364
+ ],
365
+ ['--offline', '-o', "Do not try to download anything",
366
+ lambda { |value|
367
+ trace 'Working in offline mode; snapshot will not be updated.'
368
+ options.work_offline = true
369
+ }
370
+ ],
371
+ ['--update-snapshots', '-u', "Force updating all dependencies whose version contains SNAPSHOT",
372
+ lambda { |value|
373
+ trace 'Force update of SNAPSHOT artifacts.'
374
+ options.update_snapshots = true
375
+ }
360
376
  ]
361
377
  ]
362
378
  end
@@ -483,7 +499,7 @@ module Buildr
483
499
  width = displayable_tasks.collect { |t| t.name_with_args.length }.max || 10
484
500
  max_column = truncate_output? ? terminal_width - name.size - width - 7 : nil
485
501
  displayable_tasks.each do |t|
486
- printf "#{name} %-#{width}s # %s\n",
502
+ printf "buildr %-#{width}s # %s\n",
487
503
  t.name_with_args, max_column ? truncate(t.comment, max_column) : t.comment
488
504
  end
489
505
  end
@@ -602,6 +618,13 @@ def trace(message)
602
618
  puts message if Buildr.application.options.trace
603
619
  end
604
620
 
621
+ def trace?(*category)
622
+ options = Buildr.application.options
623
+ return options.trace if category.empty?
624
+ return true if options.trace_all
625
+ return false unless Buildr.application.options.trace_categories
626
+ options.trace_categories.include?(category.first)
627
+ end
605
628
 
606
629
  module Rake #:nodoc
607
630
  # Rake's circular dependency checks (InvocationChain) only applies to task prerequisites,
@@ -239,6 +239,19 @@ module Buildr
239
239
  # Release.commit_message = lambda { |ver| "Changed version number to #{ver}" }
240
240
  attr_accessor :commit_message
241
241
 
242
+ # Use this to specify the next version number to replace VERSION_NUMBER with in the buildfile.
243
+ # You can set the next version or a proc that will be called with the current version number.
244
+ # For example, with the following buildfile:
245
+ # THIS_VERSION = "1.0.0-rc1"
246
+ # Release.next_version = lambda { |version|
247
+ # version[-1] = version[-1].to_i + 1
248
+ # version
249
+ # }
250
+ #
251
+ # Release.next_version will return "1.0.0-rc2", so at the end of the release, the buildfile will contain VERSION_NUMBER = "1.0.0-rc2"
252
+ #
253
+ attr_accessor :next_version
254
+
242
255
  # :call-seq:
243
256
  # add(MyReleaseClass)
244
257
  #
@@ -270,6 +283,7 @@ module Buildr
270
283
  #
271
284
  # Make a release.
272
285
  def make
286
+ @this_version = extract_version
273
287
  check
274
288
  with_release_candidate_version do |release_candidate_buildfile|
275
289
  args = '-S', 'buildr', "_#{Buildr::VERSION}_", '--buildfile', release_candidate_buildfile
@@ -278,11 +292,17 @@ module Buildr
278
292
  ruby *args
279
293
  end
280
294
  tag_release resolve_tag
281
- update_version_to_next
295
+ update_version_to_next if this_version != resolve_next_version(this_version)
296
+ end
297
+
298
+ def check
299
+ if this_version == resolve_next_version(this_version) && this_version.match(/-SNAPSHOT$/)
300
+ fail "The next version can't be equal to the current version #{this_version}.\nUpdate THIS_VERSION/VERSION_NUMBER, specify Release.next_version or use NEXT_VERSION env var"
301
+ end
282
302
  end
283
303
 
284
304
  # :call-seq:
285
- # extract_version() => this_versin
305
+ # extract_version() => this_version
286
306
  #
287
307
  # Extract the current version number from the buildfile.
288
308
  # Raise an error if not found.
@@ -304,6 +324,9 @@ module Buildr
304
324
  end
305
325
 
306
326
  protected
327
+
328
+ # the initial value of THIS_VERSION
329
+ attr_accessor :this_version
307
330
 
308
331
  # :call-seq:
309
332
  # with_release_candidate_version() { |filename| ... }
@@ -322,7 +345,10 @@ module Buildr
322
345
  # for the release buildfile.
323
346
  def with_release_candidate_version
324
347
  release_candidate_buildfile = Buildr.application.buildfile.to_s + '.next'
325
- release_candidate_buildfile_contents = change_version { |version| version[-1] = version[-1].split('-')[0] }
348
+
349
+ release_candidate_buildfile_contents = change_version { |version|
350
+ version.gsub(/-SNAPSHOT$/, "")
351
+ }
326
352
  File.open(release_candidate_buildfile, 'w') { |file| file.write release_candidate_buildfile_contents }
327
353
  begin
328
354
  yield release_candidate_buildfile
@@ -338,13 +364,11 @@ module Buildr
338
364
  # Change version number in the current Buildfile, but without writing a new file (yet).
339
365
  # Returns the contents of the Buildfile with the modified version number.
340
366
  #
341
- # This method yields to the block with the current (this) version number as an array and expects
342
- # the block to update it.
367
+ # This method yields to the block with the current (this) version number and expects
368
+ # the block to return the updated version.
343
369
  def change_version
344
- this_version = extract_version
345
- new_version = this_version.split('.')
346
- yield(new_version)
347
- new_version = new_version.join('.')
370
+ current_version = extract_version
371
+ new_version = yield(current_version)
348
372
  buildfile = File.read(Buildr.application.buildfile.to_s)
349
373
  buildfile.gsub(THIS_VERSION_PATTERN) { |ver| ver.sub(/(["']).*\1/, %Q{"#{new_version}"}) }
350
374
  end
@@ -357,13 +381,34 @@ module Buildr
357
381
  tag
358
382
  end
359
383
 
384
+ # Return the new value of THIS_VERSION based on the version passed.
385
+ #
386
+ # This method receives the existing value of THIS_VERSION
387
+ def resolve_next_version(current_version)
388
+ next_version = Release.next_version
389
+ next_version ||= lambda { |v|
390
+ snapshot = v.match(/-SNAPSHOT$/)
391
+ version = v.gsub(/-SNAPSHOT$/, "").split(/\./)
392
+ if snapshot
393
+ version[-1] = sprintf("%0#{version[-1].size}d", version[-1].to_i + 1) + '-SNAPSHOT'
394
+ end
395
+ version.join('.')
396
+ }
397
+ next_version = ENV['NEXT_VERSION'] if ENV['NEXT_VERSION']
398
+ next_version = ENV['next_version'] if ENV['next_version']
399
+ next_version = next_version.call(current_version) if Proc === next_version
400
+ next_version
401
+ end
402
+
360
403
  # Move the version to next and save the updated buildfile
361
404
  def update_buildfile
362
- buildfile = change_version { |version| version[-1] = sprintf("%0#{version[-1].size}d", version[-1].to_i + 1) + '-SNAPSHOT' }
405
+ buildfile = change_version { |version| # THIS_VERSION minus SNAPSHOT
406
+ resolve_next_version(this_version) # THIS_VERSION
407
+ }
363
408
  File.open(Buildr.application.buildfile.to_s, 'w') { |file| file.write buildfile }
364
409
  end
365
410
 
366
- # Return the message to use to cimmit the buildfile with the next version
411
+ # Return the message to use to commit the buildfile with the next version
367
412
  def message
368
413
  version = extract_version
369
414
  msg = Release.commit_message || "Changed version number to #{version}"
@@ -396,6 +441,7 @@ module Buildr
396
441
  # 1. the repository is clean: no content staged or unstaged
397
442
  # 2. some remote repositories are defined but the current branch does not track any
398
443
  def check
444
+ super
399
445
  uncommitted = Git.uncommitted_files
400
446
  fail "Uncommitted files violate the First Principle Of Release!\n#{uncommitted.join("\n")}" unless uncommitted.empty?
401
447
  fail "You are releasing from a local branch that does not track a remote!" unless Git.remote
@@ -404,9 +450,11 @@ module Buildr
404
450
  # Add a tag reference in .git/refs/tags and push it to the remote if any.
405
451
  # If a tag with the same name already exists it will get deleted (in both local and remote repositories).
406
452
  def tag_release(tag)
407
- info "Committing buildfile with version number #{extract_version}"
408
- Git.commit File.basename(Buildr.application.buildfile.to_s), message
409
- Git.push if Git.remote
453
+ unless this_version == extract_version
454
+ info "Committing buildfile with version number #{extract_version}"
455
+ Git.commit File.basename(Buildr.application.buildfile.to_s), message
456
+ Git.push if Git.remote
457
+ end
410
458
  info "Tagging release #{tag}"
411
459
  Git.git 'tag', '-d', tag rescue nil
412
460
  Git.git 'push', Git.remote, ":refs/tags/#{tag}" rescue nil if Git.remote
@@ -431,11 +479,14 @@ module Buildr
431
479
  end
432
480
 
433
481
  def check
482
+ super
434
483
  fail "Uncommitted files violate the First Principle Of Release!\n"+Svn.uncommitted_files.join("\n") unless Svn.uncommitted_files.empty?
435
484
  fail "SVN URL must contain 'trunk' or 'branches/...'" unless Svn.repo_url =~ /(trunk)|(branches.*)$/
436
485
  end
437
486
 
438
487
  def tag_release(tag)
488
+ # Unlike Git, committing the buildfile with the released version is not necessary.
489
+ # svn tag does commit & tag.
439
490
  info "Tagging release #{tag}"
440
491
  Svn.tag tag
441
492
  end
@@ -462,4 +513,4 @@ end
462
513
 
463
514
  class Buildr::Project
464
515
  include Buildr::Build
465
- end
516
+ end
@@ -15,6 +15,7 @@
15
15
 
16
16
 
17
17
  require 'buildr/core/common'
18
+ require 'find'
18
19
 
19
20
 
20
21
  module Buildr
@@ -91,7 +92,15 @@ module Buildr
91
92
  paths = task.sources + [sources].flatten.map { |src| Array(project.path_to(:source, task.usage, src.to_sym)) }
92
93
  paths.flatten!
93
94
  ext_glob = Array(source_ext).join(',')
94
- paths.any? { |path| !Dir["#{path}/**/*.{#{ext_glob}}"].empty? }
95
+
96
+ paths.each { |path|
97
+ Find.find(path) {|found|
98
+ if (!File.directory?(found)) && found.match(/.*\.#{Array(source_ext).join('|')}/)
99
+ return true
100
+ end
101
+ } if File.exist? path
102
+ }
103
+ false
95
104
  end
96
105
 
97
106
  # Implementations can use this method to specify various compiler attributes.