mirror of
https://github.com/textmate/textmate.git
synced 2026-01-10 15:27:58 -05:00
Instead we just add one to the last number of last version. With the new build system, the version of the build is extracted from the release notes, so this is the only source for the version number.
60 lines
1.6 KiB
Ruby
Executable File
60 lines
1.6 KiB
Ruby
Executable File
#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -w
|
||
require 'optparse'
|
||
require 'shellwords'
|
||
|
||
outfile = '/dev/stdout'
|
||
inplace = false
|
||
dump_version = false
|
||
|
||
OptionParser.new do |opts|
|
||
opts.banner = "Usage: #{File.basename(__FILE__)} [options]"
|
||
opts.on_tail('-h', '--help', 'Show this message.') { puts opts; exit }
|
||
|
||
opts.on("-o", "--output FILE", "Defaults to ‘#{outfile}’.") do |file|
|
||
outfile = file
|
||
end
|
||
|
||
opts.on("-i", "--inplace", "Overwrite input file") do
|
||
inplace = true
|
||
end
|
||
|
||
opts.on("-d", "--dump-version", "Write new version number to stdout") do
|
||
dump_version = true
|
||
end
|
||
end.parse!
|
||
|
||
infile = ARGV.shift || '/dev/stdin'
|
||
outfile = infile if inplace && !infile.start_with?('/dev/')
|
||
success = false
|
||
|
||
data = File.read(infile)
|
||
|
||
data.sub!(%r{^#+ .* \((v\d+(?:\.\d+)*(-\w+(?:\.\w+)*)?)\)}) do |match, cap|
|
||
success = true
|
||
|
||
lastVersion = $1
|
||
newVersion = lastVersion.sub(/(.*\b)(\d+)/) { "#$1%d" % ($2.to_i + 1) }
|
||
|
||
changes = %x{git log --pretty=tformat:'* %s *[%an]*' --date=short --reverse #{lastVersion.shellescape}..}
|
||
abort "#{File.basename(__FILE__)}: Error calling ‘git log’: #{changes}" unless $? == 0
|
||
|
||
STDOUT << newVersion if dump_version
|
||
|
||
changes.gsub!(/\.?( \*\[(?:Allan Odgaard|(.+?))\]\*)$/) do
|
||
$2.nil? ? "." : ".#$1"
|
||
end
|
||
|
||
res = "## #{Time.now.strftime('%Y-%m-%d')} (#{newVersion})\n"
|
||
res << "\n"
|
||
res << changes
|
||
res << "* See [all changes since #{lastVersion}](https://github.com/textmate/textmate/compare/#{lastVersion}...#{newVersion})\n"
|
||
res << "\n"
|
||
res << match
|
||
|
||
res
|
||
end
|
||
|
||
abort "No version number found in #{infile}." unless success
|
||
|
||
File.write(outfile, data)
|