From 9a5b69220413b15940f081729e2c15561e698d37 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 27 Oct 2018 11:40:52 +0200 Subject: [PATCH] Add version bump script --- script/version_bump.js | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 script/version_bump.js diff --git a/script/version_bump.js b/script/version_bump.js new file mode 100755 index 0000000000..87cb4be368 --- /dev/null +++ b/script/version_bump.js @@ -0,0 +1,52 @@ +#!/usr/bin/env node +const fs = require("fs"); +const util = require("util"); +const exec = util.promisify(require("child_process").exec); + +function patch(version) { + const parts = version.split("."); + return `${parts[0]}.${Number(parts[1]) + 1}`; +} + +function today(version) { + const now = new Date(); + return `${now.getFullYear()}${now.getMonth() + 1}${now.getDate()}.0`; +} + +const methods = { + patch, + today, +}; + +async function main(args) { + const method = args.length > 0 && methods[args[0]]; + const commit = args.length > 1 && args[1] == "--commit"; + + if (!method) { + console.error( + "Missing required method. Choose from", + Object.keys(methods).join(", ") + ); + return; + } + + const setup = fs.readFileSync("setup.py", "utf8"); + const version = setup.match(/\d{8}\.\d+/)[0]; + const newVersion = method(version); + + console.log("Current version:", version); + console.log("New version:", newVersion); + + fs.writeFileSync("setup.py", setup.replace(version, newVersion), "utf-8"); + + if (!commit) { + return; + } + + const { stdout } = await exec( + `git commit -am "Bumped version to ${newVersion}"` + ); + console.log(stdout); +} + +main(process.argv.slice(2));