A better script for bumping the version
This commit is contained in:
parent
f7d6ab579c
commit
c9c7dc2002
|
@ -3,33 +3,63 @@
|
|||
# Increases the version. e.g., from 0.8.5 to 0.8.6.
|
||||
# If you want to bump the minor or major version numbers, do it manually
|
||||
# or edit lib/version.rb before running this file.
|
||||
#
|
||||
# Optional arguments:
|
||||
# no-commit: Don't commit the file changes
|
||||
# no-push: Don't push the commits to github. no-commit implies no-push too.
|
||||
|
||||
usage = <<-END
|
||||
|
||||
Arguments:
|
||||
<version>: The new version. Must have at least 2 parts. Examples: 0.9.8, 0.10, 0.9.7.3
|
||||
no-commit: Don't commit the changes.
|
||||
push: Push the commits to github. If used by itself without the version argument,
|
||||
it's assumed that the commit and tags are ready to be pushed.
|
||||
|
||||
Example:
|
||||
|
||||
To update the version in one step, and then push the commits in a second step:
|
||||
|
||||
ruby script/version_bump.rb 0.9.7.3
|
||||
ruby script/version_bump.rb push
|
||||
|
||||
To do everything in one step:
|
||||
|
||||
ruby script/version_bump.rb 0.9.8 push
|
||||
|
||||
END
|
||||
|
||||
VERSION_FILE_PATH = File.expand_path('../../lib/version.rb', __FILE__)
|
||||
|
||||
puts '', "Updating #{VERSION_FILE_PATH}..."
|
||||
|
||||
contents = ''
|
||||
tiny_version_bumped = false
|
||||
File.open(VERSION_FILE_PATH) do |f|
|
||||
line = f.read
|
||||
m = /TINY\s*=\s*([\d]+)/.match(line)
|
||||
tiny_version_bumped = true if m
|
||||
contents += m ? line.sub(m[0], m[0].sub(m[1], (m[1].to_i + 1).to_s)) : line
|
||||
end
|
||||
|
||||
unless tiny_version_bumped
|
||||
puts "ERROR: couldn't update lib/version.rb. Is it missing the TINY constant?"
|
||||
if ARGV.length < 1
|
||||
puts usage
|
||||
exit 1
|
||||
end
|
||||
|
||||
puts "Saving..."
|
||||
new_version = ARGV[0].split('.')
|
||||
if new_version.length < 2 and !ARGV.include?('push')
|
||||
puts "First argument must be a version number with at least 2 parts. Examples: 0.9.8, 0.10, 0.9.7.3"
|
||||
exit 1
|
||||
end
|
||||
|
||||
File.open(VERSION_FILE_PATH, 'w+') do |f|
|
||||
f.write(contents)
|
||||
update_version_file = new_version.length >= 2
|
||||
|
||||
if update_version_file
|
||||
puts '', "New Version: #{new_version.join('.')}", "Updating #{VERSION_FILE_PATH}..."
|
||||
|
||||
contents = ''
|
||||
tiny_version_bumped = false
|
||||
File.open(VERSION_FILE_PATH) do |f|
|
||||
contents = f.read
|
||||
['MAJOR', 'MINOR', 'TINY', 'PRE'].each_with_index do |name, i|
|
||||
r = Regexp.new(name + '\s*=\s*(nil|[\d]+)')
|
||||
m = r.match(contents)
|
||||
v = new_version[i].to_i > 0 ? new_version[i] : (name == 'PRE' ? 'nil' : '0')
|
||||
contents.sub!(m[0], m[0].sub(m[1], v)) if m
|
||||
end
|
||||
end
|
||||
|
||||
puts "Saving..."
|
||||
|
||||
File.open(VERSION_FILE_PATH, 'w+') do |f|
|
||||
f.write(contents)
|
||||
end
|
||||
end
|
||||
|
||||
require File.expand_path('../../lib/version', __FILE__)
|
||||
|
@ -37,21 +67,24 @@ require File.expand_path('../../lib/version', __FILE__)
|
|||
version = Discourse::VERSION::STRING
|
||||
puts "New version is: #{version}"
|
||||
|
||||
puts ARGV
|
||||
|
||||
unless ARGV.include?('no-commit')
|
||||
puts "Commiting..."
|
||||
unless ARGV.include?('no-commit') or !update_version_file
|
||||
puts "Committing..."
|
||||
|
||||
`git add lib/version.rb`
|
||||
`git commit -m "Version bump to v#{version}"`
|
||||
sha = `git rev-parse HEAD`.strip
|
||||
`git tag -d latest-release`
|
||||
`git push origin :latest-release`
|
||||
`git tag -a v#{version} -m "version #{version}" #{sha}`
|
||||
`git tag -a latest-release -m "latest release" #{sha}`
|
||||
end
|
||||
|
||||
unless ARGV.include?('no-push')
|
||||
puts "Pushing..."
|
||||
`git push origin master`
|
||||
`git push origin v#{version}`
|
||||
end
|
||||
if ARGV.include?('push')
|
||||
puts "Pushing..."
|
||||
|
||||
`git push origin master`
|
||||
`git push origin v#{version}`
|
||||
`git push origin latest-release`
|
||||
end
|
||||
|
||||
puts "Done",''
|
||||
|
|
Loading…
Reference in New Issue