# File lib/bones/plugins/git.rb, line 15
15: def define_tasks
16: return unless have? :git
17:
18: config = ::Bones.config
19: namespace :git do
20:
21: # A prerequisites task that all other tasks depend upon
22: task :prereqs
23:
24: desc 'Show tags from the git repository'
25: task :tags => 'git:prereqs' do |t|
26: puts Git.open('.').tags.map {|t| t.name}.reverse
27: end
28:
29: desc 'Show all log messages since the last release'
30: task :changes => 'git:prereqs' do |t|
31: tag = Git.open('.').tags.map {|t| t.name}.last
32: range = tag ? "#{tag}..HEAD" : ''
33: system "git log --oneline #{range}"
34: end
35:
36: desc 'Create a new tag in the git repository'
37: task :create_tag => 'git:prereqs' do |t|
38: v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
39: abort "Versions don't match #{v} vs #{config.version}" if v != config.version
40:
41: git = Git.open '.'
42: tag = "%s-%s" % [config.name, config.version]
43: puts "Creating git tag '#{tag}'."
44:
45: begin
46: git.add_tag tag
47: rescue Git::GitExecuteError
48: abort "Tag creation failed: tag '#{tag}' already exists."
49: end
50:
51: if git.remotes.map {|r| r.name}.include? 'origin'
52: unless system "git push origin #{tag}"
53: abort "Could not push tag to remote git repository."
54: end
55: end
56: end # task
57:
58: desc 'Delete a tag from the git repository'
59: task :delete_tag => 'git:prereqs' do |t|
60: v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
61:
62: git = Git.open '.'
63: tag = "%s-%s" % [config.name, v]
64:
65: unless git.tags.map {|t| t.name}.include? tag
66: puts "Tag '#{tag}' does not exist."
67: break
68: end
69:
70: puts "Deleting git tag '#{tag}'."
71: abort 'Tag deletion failed.' unless system "git tag -d '#{tag}'"
72:
73: if git.remotes.map {|r| r.name}.include? 'origin'
74: unless system "git push origin ':refs/tags/#{tag}'"
75: abort "Could not delete tag from remote git repository."
76: end
77: end
78: end # task
79:
80: task :dev_version do |t|
81: rgxp = Regexp.new(Regexp.escape(config.version) + '-(\d+)')
82: m = rgxp.match(%(git describe --tags))
83: (config.version << ".#{m[1]}") if m
84: end # task
85:
86: end # namespace :git
87:
88: task 'gem:package' => 'git:dev_version'
89: task 'gem:release' => 'git:create_tag'
90: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.