mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-04-28 06:54:06 -04:00
A better script for bumping the version
This commit is contained in:
parent
f7d6ab579c
commit
c9c7dc2002
1 changed files with 62 additions and 29 deletions
|
@ -3,33 +3,63 @@
|
||||||
# Increases the version. e.g., from 0.8.5 to 0.8.6.
|
# 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
|
# If you want to bump the minor or major version numbers, do it manually
|
||||||
# or edit lib/version.rb before running this file.
|
# or edit lib/version.rb before running this file.
|
||||||
#
|
|
||||||
# Optional arguments:
|
usage = <<-END
|
||||||
# no-commit: Don't commit the file changes
|
|
||||||
# no-push: Don't push the commits to github. no-commit implies no-push too.
|
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__)
|
VERSION_FILE_PATH = File.expand_path('../../lib/version.rb', __FILE__)
|
||||||
|
|
||||||
puts '', "Updating #{VERSION_FILE_PATH}..."
|
if ARGV.length < 1
|
||||||
|
puts usage
|
||||||
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?"
|
|
||||||
exit 1
|
exit 1
|
||||||
end
|
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|
|
update_version_file = new_version.length >= 2
|
||||||
f.write(contents)
|
|
||||||
|
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
|
end
|
||||||
|
|
||||||
require File.expand_path('../../lib/version', __FILE__)
|
require File.expand_path('../../lib/version', __FILE__)
|
||||||
|
@ -37,21 +67,24 @@ require File.expand_path('../../lib/version', __FILE__)
|
||||||
version = Discourse::VERSION::STRING
|
version = Discourse::VERSION::STRING
|
||||||
puts "New version is: #{version}"
|
puts "New version is: #{version}"
|
||||||
|
|
||||||
puts ARGV
|
unless ARGV.include?('no-commit') or !update_version_file
|
||||||
|
puts "Committing..."
|
||||||
unless ARGV.include?('no-commit')
|
|
||||||
puts "Commiting..."
|
|
||||||
|
|
||||||
`git add lib/version.rb`
|
`git add lib/version.rb`
|
||||||
`git commit -m "Version bump to v#{version}"`
|
`git commit -m "Version bump to v#{version}"`
|
||||||
sha = `git rev-parse HEAD`.strip
|
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 v#{version} -m "version #{version}" #{sha}`
|
||||||
|
`git tag -a latest-release -m "latest release" #{sha}`
|
||||||
|
end
|
||||||
|
|
||||||
unless ARGV.include?('no-push')
|
if ARGV.include?('push')
|
||||||
puts "Pushing..."
|
puts "Pushing..."
|
||||||
`git push origin master`
|
|
||||||
`git push origin v#{version}`
|
`git push origin master`
|
||||||
end
|
`git push origin v#{version}`
|
||||||
|
`git push origin latest-release`
|
||||||
end
|
end
|
||||||
|
|
||||||
puts "Done",''
|
puts "Done",''
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue