mirror of
https://github.com/discourse/discourse.git
synced 2024-12-16 13:13:44 +08:00
91 lines
2.4 KiB
Ruby
91 lines
2.4 KiB
Ruby
#!/usr/bin/env ruby
|
|
#
|
|
# 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.
|
|
|
|
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__)
|
|
|
|
if ARGV.length < 1
|
|
puts usage
|
|
exit 1
|
|
end
|
|
|
|
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
|
|
|
|
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__)
|
|
|
|
version = Discourse::VERSION::STRING
|
|
puts "New version is: #{version}"
|
|
|
|
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
|
|
|
|
if ARGV.include?('push')
|
|
puts "Pushing..."
|
|
|
|
`git push origin master`
|
|
`git push origin v#{version}`
|
|
`git push origin latest-release`
|
|
end
|
|
|
|
puts "Done",''
|