blob: ae9426edeed4cdce08af34304951f9f1caeb86ad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
|