You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by as...@apache.org on 2008/04/16 01:15:09 UTC

svn commit: r648452 - in /incubator/buildr/docter/trunk: Rakefile lib/docter.rb lib/docter/template.rb rakelib/release.rake

Author: assaf
Date: Tue Apr 15 16:15:05 2008
New Revision: 648452

URL: http://svn.apache.org/viewvc?rev=648452&view=rev
Log:
Fix to copying resources when those include directories.
Fix to release task for tagging, updating version and checking local changes.

Modified:
    incubator/buildr/docter/trunk/Rakefile
    incubator/buildr/docter/trunk/lib/docter.rb
    incubator/buildr/docter/trunk/lib/docter/template.rb
    incubator/buildr/docter/trunk/rakelib/release.rake

Modified: incubator/buildr/docter/trunk/Rakefile
URL: http://svn.apache.org/viewvc/incubator/buildr/docter/trunk/Rakefile?rev=648452&r1=648451&r2=648452&view=diff
==============================================================================
--- incubator/buildr/docter/trunk/Rakefile (original)
+++ incubator/buildr/docter/trunk/Rakefile Tue Apr 15 16:15:05 2008
@@ -14,10 +14,6 @@
 # the License.
 
 
-require 'rake/gempackagetask'
-require 'rake/rdoctask'
-require 'rubyforge'
-
 # Gem specification comes first, other tasks rely on it.
 def spec
   Gem::Specification.new do |spec|
@@ -42,6 +38,7 @@
     spec.add_dependency 'haml',        '~> 1.8'
     spec.add_dependency 'mongrel',     '~> 1.1'
     spec.add_dependency 'syntax',      '~> 1.0'
+    spec.add_dependency 'rake',        '~> 0.8'
   end
 end
 

Modified: incubator/buildr/docter/trunk/lib/docter.rb
URL: http://svn.apache.org/viewvc/incubator/buildr/docter/trunk/lib/docter.rb?rev=648452&r1=648451&r2=648452&view=diff
==============================================================================
--- incubator/buildr/docter/trunk/lib/docter.rb (original)
+++ incubator/buildr/docter/trunk/lib/docter.rb Tue Apr 15 16:15:05 2008
@@ -18,7 +18,6 @@
   VERSION = '1.1.3'.freeze
 end
 
-#$LOAD_PATH.unshift __DIR__
 
 # Ruby 1.9 conveniences.
 module Kernel #:nodoc:
@@ -34,10 +33,11 @@
   end unless method_defined?('to_proc')
 end
 
+
 require 'docter/common.rb'
 require 'docter/page.rb'
 require 'docter/template.rb'
 require 'docter/collection.rb'
 require 'docter/server.rb'
-require 'docter/rake.rb' if defined?(Rake)
+require 'docter/rake.rb'
 require 'docter/ultraviolet.rb' if defined?(Uv)

Modified: incubator/buildr/docter/trunk/lib/docter/template.rb
URL: http://svn.apache.org/viewvc/incubator/buildr/docter/trunk/lib/docter/template.rb?rev=648452&r1=648451&r2=648452&view=diff
==============================================================================
--- incubator/buildr/docter/trunk/lib/docter/template.rb (original)
+++ incubator/buildr/docter/trunk/lib/docter/template.rb Tue Apr 15 16:15:05 2008
@@ -157,7 +157,18 @@
     # Copy resource files to the destination directory.
     def copy_resources(to_dir)
       mkpath to_dir
-      cp_r @sources, to_dir
+      @sources.each do |src|
+        if File.directory?(src)
+          target = File.join(to_dir, File.basename(src))
+          mkpath target
+          FileList["#{src}/**/*"].reject { |path| File.directory?(path) }.each do |path|
+            mkpath File.dirname(path).gsub(/^#{src}/, target)
+            cp path, path.gsub(/^#{src}/, target)
+          end
+        else
+          cp src, to_dir
+        end
+      end
       touch to_dir # For Rake dependency management.
     end
 

Modified: incubator/buildr/docter/trunk/rakelib/release.rake
URL: http://svn.apache.org/viewvc/incubator/buildr/docter/trunk/rakelib/release.rake?rev=648452&r1=648451&r2=648452&view=diff
==============================================================================
--- incubator/buildr/docter/trunk/rakelib/release.rake (original)
+++ incubator/buildr/docter/trunk/rakelib/release.rake Tue Apr 15 16:15:05 2008
@@ -51,6 +51,7 @@
   task 'check' do
     status = `svn status`
     fail "Cannot release unless all local changes are in SVN:\n#{status}" unless status.empty?
+    fail "Cannot release unless all local changes are in Git:\n" + `git status` if `git status`[/^#\t/]
   end
 
   desc 'Make a release'
@@ -61,51 +62,70 @@
   end
 
   task 'rubyforge'=>'package' do
-    # Read the changes for this release.
-    print 'Looking for changes between this release and previous one ... '
-    pattern = /(^(\d+\.\d+(?:\.\d+)?)\s+\(\d{4}-\d{2}-\d{2}\)\s*((:?^[^\n]+\n)*))/
-    changelog = File.read('CHANGELOG')
-    changes = changelog.scan(pattern).inject({}) { |hash, set| hash[set[1]] = set[2] ; hash }
-    current = changes[spec.version.to_s]
-    current = changes[spec.version.to_s.split('.')[0..-2].join('.')] if !current && spec.version.to_s =~ /\.0$/
-    fail "No changeset found for version #{spec.version}" unless current
-    puts 'OK'
+    if File.exist?('CHANGELOG')
+      # Read the changes for this release.
+      print 'Looking for changes between this release and previous one ... '
+      pattern = /(^(\d+\.\d+(?:\.\d+)?)\s+\(\d{4}-\d{2}-\d{2}\)\s*((:?^[^\n]+\n)*))/
+      changes = File.read('CHANGELOG').scan(pattern).inject({}) { |hash, set| hash[set[1]] = set[2] ; hash }
+      current = changes[spec.version.to_s]
+      current = changes[spec.version.to_s.split('.')[0..-2].join('.')] if !current && spec.version.to_s =~ /\.0$/
+      fail "No changeset found for version #{spec.version}" unless current
+      puts 'OK'
+    end
 
     print "Uploading #{spec.version} to RubyForge ... "
     files = Dir.glob('pkg/*.{gem,tgz,zip}')
     rubyforge = RubyForge.new
-    rubyforge.login    
-    File.open('.changes', 'w'){|f| f.write(current)}
-    rubyforge.userconfig.merge!('release_changes' => '.changes',  'preformatted' => true)
-    rubyforge.add_release spec.rubyforge_project.downcase, spec.name.downcase, spec.version, *files
-    rm '.changes'
+    rubyforge.login 
+    begin
+      if changes
+        File.open('.changes', 'w'){|f| f.write(current)}
+        rubyforge.userconfig.merge!('release_changes' => '.changes',  'preformatted' => true)
+      end
+      rubyforge.add_release spec.rubyforge_project.downcase, spec.name.downcase, spec.version, *files
+    ensure
+      rm '.changes' if changes
+    end
     puts 'Done'
   end
 
   # Tag this release in SVN.
   task 'tag' do
+    info = `svn info` + `git svn info` # Using either svn or git-svn
+    url = info[/^URL:/] && info.scan(/^URL: (.*)/)[0][0] 
+    break unless url
+    new_url = url.sub(/(trunk$)|(branches\/\w*)$/, "tags/#{spec.version}")
+    break if url == new_url
     print "Tagging release as tags/#{spec.version} ... "
-    cur_url = `svn info`.scan(/URL: (.*)/)[0][0]
-    new_url = cur_url.sub(/(trunk$)|(branches\/\w*)$/, "tags/#{spec.version.to_s}")
-    sh 'svn', 'copy', cur_url, new_url, '-m', "Release #{spec.version.to_s}", :verbose=>false
-    puts "OK"
+    sh 'svn', 'copy', url, new_url, '-m', "Release #{spec.version}", :verbose=>false do |ok, res|
+      if ok
+        puts 'Done'
+      else
+        puts 'Could not create tag, please do it yourself!'
+        puts %{  svn copy #{url} #{new_url} -m "#{spec.version}"}
+      end
+    end
   end
 
   # Update lib/buildr.rb to next vesion number, add new entry in CHANGELOG.
   task 'next_version'=>'tag' do
     next_version = spec.version.to_ints.zip([0, 0, 1]).map { |a| a.inject(0) { |t,i| t + i } }.join('.')
-    print "Updating lib/buildr.rb to next version number (#{next_version}) ... "
-    buildr_rb = File.read(__FILE__.pathmap('%d/lib/buildr.rb')).
-      sub(/(VERSION\s*=\s*)(['"])(.*)\2/) { |line| "#{$1}#{$2}#{next_version}#{$2}" } 
-    File.open(__FILE__.pathmap('%d/lib/buildr.rb'), 'w') { |file| file.write buildr_rb }
-    puts "OK"
-
-    print 'Adding new entry to CHANGELOG ... '
-    changelog = File.read('CHANGELOG')
-    File.open('CHANGELOG', 'w') { |file| file.write "#{next_version} (Pending)\n\n#{changelog}" }
-    puts "OK"
+    ver_file = "lib/#{spec.name}.rb"
+    if File.exist?(ver_file)
+      print "Updating #{ver_file} to next version number (#{next_version}) ... "
+      modified = File.read(ver_file).sub(/(VERSION\s*=\s*)(['"])(.*)\2/) { |line| "#{$1}#{$2}#{next_version}#{$2}" } 
+      File.open(ver_file, 'w') { |file| file.write modified }
+      puts 'Done'
+    end
+
+    if File.exist?('CHANGELOG')
+      print 'Adding new entry to CHANGELOG ... '
+      modified = "#{next_version} (Pending)\n\n" + File.read('CHANGELOG')
+      File.open('CHANGELOG', 'w') { |file| file.write modified }
+      puts 'Done'
+    end
   end
 
-  #task 'wrapup'=>['tag', 'next_version']
+  task 'wrapup'=>['tag', 'next_version']
 
 end