41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| namespace :git do
 | |
|   namespace :tag do
 | |
|     desc 'List tags from the Git repository'
 | |
|     task :list do
 | |
|       tags = `git tag -l`
 | |
|       tags.gsub!('\r', '')
 | |
|       tags = tags.split('\n').sort {|a, b| b <=> a }
 | |
|       puts tags.join('\n')
 | |
|     end
 | |
| 
 | |
|     desc 'Create a new tag in the Git repository'
 | |
|     task :create do
 | |
|       changelog = File.open('CHANGELOG', 'r') { |file| file.read }
 | |
|       puts '-' * 80
 | |
|       puts changelog
 | |
|       puts '-' * 80
 | |
|       puts
 | |
| 
 | |
|       v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
 | |
|       abort "Versions don't match #{v} vs #{PKG_VERSION}" if v != PKG_VERSION
 | |
| 
 | |
|       tag = "#{PKG_NAME}-#{PKG_VERSION}"
 | |
|       msg = "Release #{PKG_NAME}-#{PKG_VERSION}"
 | |
| 
 | |
|       existing_tags = `git tag -l #{PKG_NAME}-*`.split('\n')
 | |
|       if existing_tags.include?(tag)
 | |
|         warn('Tag already exists, deleting...')
 | |
|         unless system "git tag -d #{tag}"
 | |
|           abort 'Tag deletion failed.'
 | |
|         end
 | |
|       end
 | |
|       puts "Creating git tag '#{tag}'..."
 | |
|       unless system "git tag -a -m \"#{msg}\" #{tag}"
 | |
|         abort 'Tag creation failed.'
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| task 'gem:release' => 'git:tag:create'
 |