1+ namespace :vox do
2+ desc 'Update version, create tag, and push to origin'
3+ task :tag , [ :tag ] do |_ , args |
4+ abort 'You must provide a tag.' if args [ :tag ] . nil? || args [ :tag ] . empty?
5+ version = args [ :tag ]
6+ abort "#{ version } does not appear to be a valid version string in x.y.z format" unless Gem ::Version . correct? ( version )
7+
8+ # Update lib/puppet/version.rb and puppet.gemspec
9+ puts "Setting version to #{ version } "
10+ data = File . read ( 'lib/puppet/version.rb' )
11+ data = data . sub ( /PUPPETVERSION = '\d +\. \d +\. \d +'/ , "PUPPETVERSION = '#{ version } '" )
12+ File . write ( 'lib/puppet/version.rb' , data )
13+ data = File . read ( 'puppet.gemspec' )
14+ data = data . sub ( /spec.version = "\d +\. \d +\. \d +"/ , "spec.version = \" #{ version } \" " )
15+ File . write ( 'puppet.gemspec' , data )
16+ run_command ( "git add lib/puppet/version.rb && git add puppet.gemspec && git commit -m 'Set version to #{ version } '" , true )
17+
18+ # Run git command to get short SHA and one line description of the commit on HEAD
19+ branch = run_command ( 'git rev-parse --abbrev-ref HEAD' , true )
20+ sha = run_command ( 'git rev-parse --short HEAD' , true )
21+ msg = run_command ( 'git log -n 1 --pretty=%B' , true )
22+
23+ puts "Branch: #{ branch } "
24+ puts "SHA: #{ sha } "
25+ puts "Commit: #{ msg } "
26+
27+ run_command ( "git tag -a #{ version } -m '#{ version } '" )
28+
29+ unless !ENV [ 'NOPUSH' ] . nil?
30+ puts "Pushing to origin"
31+ run_command ( "git push origin && git push origin #{ version } " )
32+ end
33+ end
34+ end
0 commit comments