#!/usr/bin/env node /* eslint-disable no-console */ import fs from "fs"; import util from "util"; import child_process from "child_process"; const exec = util.promisify(child_process.exec); function patch(version) { const parts = version.split("."); return `${parts[0]}.${Number(parts[1]) + 1}`; } function today() { const now = new Date(); return `${now.getUTCFullYear()}${String(now.getUTCMonth() + 1).padStart( 2, "0" )}${String(now.getUTCDate()).padStart(2, "0")}.0`; } function auto(version) { const todayVersion = today(); if (todayVersion.split(".")[0] !== version.split(".")[0]) { return todayVersion; } return patch(version); } function nightly() { return `${today()}.dev`; } const methods = { patch, today, auto, nightly, }; async function main(args) { let method; let commit; if (args.length === 0) { method = methods.auto; commit = true; } else { method = args.length > 0 && methods[args[0]]; 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("pyproject.toml", "utf8"); const version = setup.match(/version\W+=\W"(\d{8}\.\d)"/)[1]; const newVersion = method(version); console.log("Current version:", version); console.log("New version:", newVersion); fs.writeFileSync( "pyproject.toml", 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)).catch(console.error);