Port version bumping from grunt to make.

This commit is contained in:
ccd0 2016-04-16 17:53:57 -07:00
parent 213d898b1b
commit 81b0760227
4 changed files with 79 additions and 3 deletions

View File

@ -1,5 +1,3 @@
name := 4chan-X
ifdef ComSpec
BIN := $(subst /,\,node_modules/.bin/)
RMDIR := -rmdir /s /q
@ -23,6 +21,9 @@ template_deps := package.json tools/template.js node_modules/lodash/package.json
cat := node tools/cat.js
cat_deps := tools/cat.js
name := $(shell node -p "JSON.parse(require('fs').readFileSync('package.json')).name")
version := $(shell node -p "JSON.parse(require('fs').readFileSync('version.json')).version")
capitalized = $(filter-out a,$(foreach x,$1,$(subst a $(x),,$(sort a $(x)))))
parts := \
@ -206,9 +207,13 @@ install.json :
node tools/install.js
echo -> $@
.events/CHANGELOG : version.json | .events
node tools/updcl.js
echo -> $@
.SECONDARY :
.PHONY: default all clean cleanall script crx release jshint install
.PHONY: default all clean cleanall script crx release jshint install tag $(foreach i,1 2 3 4,$(bump$(i)))
clean :
$(RMDIR) tmp testbuilds .events
@ -226,3 +231,12 @@ release : $(release)
jshint : $(jshint)
install : .events/install
tag : .events/CHANGELOG $(jshint) $(release)
git commit -am "Release $(name) v$(version)."
git tag -a $(version) -m "$(name) v$(version)."
bump% :
$(MAKE) cleanall
node tools/bump.js $*
$(MAKE) tag install

View File

@ -49,6 +49,7 @@
"devDependencies": {
"coffee-script": "1.9.3",
"crx": "^3.0.3",
"dateformat": "^1.0.12",
"esprima": "^2.7.2",
"font-awesome": "4.5.0",
"grunt": "^1.0.1",

26
tools/bump.js Normal file
View File

@ -0,0 +1,26 @@
var fs = require('fs');
function bump(version, level) {
var parts = version.split('.');
var i;
for (i = 0; i < level; i++) {
parts[i] = (parts[i] || '0');
}
parts[level-1] = +parts[level-1] + 1;
for (i = level; i < parts.length; i++) {
parts[i] = '0';
}
return parts.join('.');
}
function setversion(version) {
var data = {version: version, date: new Date()};
fs.writeFileSync('version.json', JSON.stringify(data, null, 2));
}
var level = +process.argv[2];
var v = JSON.parse(fs.readFileSync('version.json', 'utf8'));
var oldversion = v.version;
var version = bump(oldversion, level);
setversion(version);
console.log(`Version updated from v${oldversion} to v${version}.`);

35
tools/updcl.js Normal file
View File

@ -0,0 +1,35 @@
var fs = require('fs');
var dateFormat = require('dateformat');
var pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
var v = JSON.parse(fs.readFileSync('version.json', 'utf8'));
var name = pkg.name;
var oldVersions = pkg.meta.oldVersions;
var version = v.version;
var date = v.date;
var branch = version.replace(/\.\d+$/, '');
var headerLevel = branch.replace(/(\.0)*$/, '').split('.').length;
var headerPrefix = new Array(headerLevel + 1).join('#');
var separator = `${headerPrefix} v${branch}`;
var today = dateFormat(date, 'yyyy-mm-dd');
var filename = `/builds/${name}-noupdate`;
var ffLink = `${oldVersions}${version}${filename}.user.js`;
var crLink = `${oldVersions}${version}${filename}.crx`;
var line = `**v${version}** *(${today})* - [[Firefox](${ffLink} \"Firefox version\")] [[Chromium](${crLink} \"Chromium version\")]`;
var changelog = fs.readFileSync('CHANGELOG.md', 'utf8');
var breakPos = changelog.indexOf(separator);
if (breakPos < 0) throw new Error('Separator not found.');
breakPos += separator.length;
var prevVersion = changelog.substr(breakPos).match(/\*\*v([\d\.]+)\*\*/)[1];
if (prevVersion.replace(/\.\d+$/, '') !== branch) {
line += `\n- Based on v${prevVersion}.`;
}
fs.writeFileSync('CHANGELOG.md', `${changelog.substr(0, breakPos)}\n\n${line}${changelog.substr(breakPos)}`, 'utf8');
console.log(`Changelog updated for v${version}.`);