diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 5c8ca5509..4980f3978 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -116,8 +116,6 @@ module.exports = (grunt) -> command: (channel='') -> "node tools/sign.js #{channel}" 'copy-builds': command: '<%= builds.map(file => `node tools/cp.js testbuilds/${file} builds/${file}`).join("&&") %>' - bump: - command: (channel='') -> "<%= BIN %>coffee tools/bump.coffee #{channel}" markdown: command: 'node tools/markdown.js' commit: @@ -234,16 +232,21 @@ module.exports = (grunt) -> 'shell:copy-builds' ] - grunt.registerTask 'bump', 'Bump the version number and tag a new release', (level) -> + grunt.registerTask 'tag', 'Tag a new release', (version) -> grunt.task.run [ - "shell:bump:#{level}" - 'update-version' + "setversion:#{version}" + 'updcl' 'full' 'shell:commit' ] - grunt.registerTask 'update-version', 'Re-read the version from version.json', -> - grunt.config 'pkg', loadPkg() + grunt.registerTask 'bump', 'Bump the version number and tag a new release', (level) -> + pkg = grunt.config 'pkg' + parts = pkg.meta.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] + grunt.task.run "tag:#{parts.join '.'}" grunt.registerTask 'pushd', 'Change directory to the distribution worktree and check out gh-pages branch.', -> pkg = grunt.config 'pkg' @@ -298,3 +301,40 @@ module.exports = (grunt) -> grunt.registerTask 'captchas', [ 'shell:captchas' ] + + grunt.registerTask 'setversion', 'Set the version number', (version) -> + data = grunt.file.readJSON 'version.json' + oldversion = data.version + data.version = version + data.date = new Date() + grunt.file.write 'version.json', JSON.stringify(data, null, 2) + '\n' + grunt.log.ok "Version updated from v#{oldversion} to v#{version}." + grunt.config 'pkg', loadPkg() + + grunt.registerTask 'updcl', 'Update the changelog', -> + {meta, name} = grunt.config('pkg') + {version, oldVersions} = meta + + branch = version.replace /\.\d+$/, '' + headerLevel = branch.replace(/(\.0)*$/, '').split('.').length + headerPrefix = new Array(headerLevel + 1).join '#' + separator = "#{headerPrefix} v#{branch}" + + today = grunt.template.today '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 = grunt.file.read 'CHANGELOG.md' + + 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}." + + grunt.file.write 'CHANGELOG.md', "#{changelog[...breakPos]}\n\n#{line}#{changelog[breakPos..]}" + grunt.log.ok "Changelog updated for v#{version}." diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 319f7ebdd..806a70237 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -193,258 +193,6 @@ } } }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "dependencies": { - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - } - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "loud-rejection": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.3.0.tgz", - "dependencies": { - "array-find-index": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz" - }, - "signal-exit": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz" - } - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "normalize-package-data": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "dependencies": { - "hosted-git-info": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.4.tgz" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" - } - } - }, - "semver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz" - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "dependencies": { - "spdx-license-ids": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz" - } - } - }, - "spdx-expression-parse": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", - "dependencies": { - "spdx-exceptions": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz" - }, - "spdx-license-ids": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz" - } - } - } - } - } - } - }, - "object-assign": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz" - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "dependencies": { - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "dependencies": { - "error-ex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - } - } - } - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "dependencies": { - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - } - } - } - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "pinkie-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - } - } - } - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "dependencies": { - "repeating": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.0.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - } - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - } - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - } - } - } - } - }, "font-awesome": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.5.0.tgz" diff --git a/package.json b/package.json index 1fa17ff3e..7b3d472c4 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,6 @@ "devDependencies": { "coffee-script": "1.9.3", "crx": "^3.0.3", - "dateformat": "^1.0.12", "font-awesome": "4.5.0", "fs-extra": "^0.26.7", "glob": "^7.0.3", diff --git a/tools/bump.coffee b/tools/bump.coffee deleted file mode 100644 index 9a052b139..000000000 --- a/tools/bump.coffee +++ /dev/null @@ -1,45 +0,0 @@ -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}."