4chan-x/tools/bump.coffee
2016-04-10 04:27:09 -07:00

46 lines
1.6 KiB
CoffeeScript

fs = require 'fs'
dateFormat = require 'dateformat'
pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'))
v = JSON.parse(fs.readFileSync('version.json', 'utf8'))
level = +process.argv[2]
parts = v.version.split '.'
parts[i] or= '0' for i in [0...level]
parts[level-1] = +parts[level-1] + 1
parts[i] = 0 for i in [level...parts.length]
version = parts.join '.'
oldversion = v.version
v.version = version
v.date = new Date()
fs.writeFileSync 'version.json', JSON.stringify(v, null, 2) + '\n'
console.log "Version updated from v#{oldversion} to v#{version}."
{meta, name} = pkg
{oldVersions} = meta
branch = version.replace /\.\d+$/, ''
headerLevel = branch.replace(/(\.0)*$/, '').split('.').length
headerPrefix = new Array(headerLevel + 1).join '#'
separator = "#{headerPrefix} v#{branch}"
today = dateFormat v.date, 'yyyy-mm-dd'
filename = "/builds/#{name}-noupdate"
ffLink = "#{oldVersions}#{version}#{filename}.user.js"
crLink = "#{oldVersions}#{version}#{filename}.crx"
line = "**v#{version}** *(#{today})* - [[Firefox](#{ffLink} \"Firefox version\")] [[Chromium](#{crLink} \"Chromium version\")]"
changelog = fs.readFileSync 'CHANGELOG.md', 'utf8'
breakPos = changelog.indexOf(separator)
throw new Error 'Separator not found.' if breakPos is -1
breakPos += separator.length
prevVersion = changelog[breakPos..].match(/\*\*v([\d\.]+)\*\*/)[1]
unless prevVersion.replace(/\.\d+$/, '') is branch
line += "\n- Based on v#{prevVersion}."
fs.writeFileSync 'CHANGELOG.md', "#{changelog[...breakPos]}\n\n#{line}#{changelog[breakPos..]}"
console.log "Changelog updated for v#{version}."