diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2011-05-26 18:22:10 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2011-05-26 18:22:10 +0200 |
commit | d23181c138e8f0258641308ffd34370d3b132e8e (patch) | |
tree | f0e28aa0fed6b3093f091d12260637fbcc551c47 /tasks/svn.rake | |
download | zorglub-d23181c138e8f0258641308ffd34370d3b132e8e.zip zorglub-d23181c138e8f0258641308ffd34370d3b132e8e.tar.gz |
initial commit
Diffstat (limited to 'tasks/svn.rake')
-rw-r--r-- | tasks/svn.rake | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tasks/svn.rake b/tasks/svn.rake new file mode 100644 index 0000000..ae9426e --- /dev/null +++ b/tasks/svn.rake @@ -0,0 +1,48 @@ +# -*- coding: UTF-8 -*- +# +if HAVE_SVN + +unless PROJ.svn.root + info = %x/svn info ./ + m = %r/^Repository Root:\s+(.*)$/.match(info) + PROJ.svn.root = (m.nil? ? '' : m[1]) +end +PROJ.svn.root = File.join(PROJ.svn.root, PROJ.svn.path) unless PROJ.svn.path.empty? + +namespace :svn do + + # A prerequisites task that all other tasks depend upon + task :prereqs + + desc 'Show tags from the SVN repository' + task :show_tags => 'svn:prereqs' do |t| + tags = %x/svn list #{File.join(PROJ.svn.root, PROJ.svn.tags)}/ + tags.gsub!(%r/\/$/, '') + tags = tags.split("\n").sort {|a,b| b <=> a} + puts tags + end + + desc 'Create a new tag in the SVN repository' + task :create_tag => 'svn:prereqs' do |t| + v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z' + abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version + + svn = PROJ.svn + trunk = File.join(svn.root, svn.trunk) + tag = "%s-%s" % [PROJ.name, PROJ.version] + tag = File.join(svn.root, svn.tags, tag) + msg = "Creating tag for #{PROJ.name} version #{PROJ.version}" + + puts "Creating SVN tag '#{tag}'" + unless system "svn cp -m '#{msg}' #{trunk} #{tag}" + abort "Tag creation failed" + end + end + +end # namespace :svn + +task 'gem:release' => 'svn:create_tag' + +end # if PROJ.svn.path + +# EOF |