85 lines
1.7 KiB
JavaScript
Executable File
85 lines
1.7 KiB
JavaScript
Executable File
#!/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);
|