mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 13:03:45 +08:00
30990006a9
This reduces chances of errors where consumers of strings mutate inputs and reduces memory usage of the app. Test suite passes now, but there may be some stuff left, so we will run a few sites on a branch prior to merging
93 lines
2.4 KiB
Ruby
Executable File
93 lines
2.4 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
#
|
|
# 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) && !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') || !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", ''
|