repo: helper for bumping versions
This commit is contained in:
parent
a17a08ae28
commit
bfb4e8c982
80
contrib/bump-taler-version.mjs
Executable file
80
contrib/bump-taler-version.mjs
Executable file
@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
// Bump the package.json versions in Taler-related packagesin
|
||||
// this repository.
|
||||
// The version must be in one of the following formats:
|
||||
// - x.y.z
|
||||
// - x.y.z-dev.n
|
||||
|
||||
import * as fs from "fs";
|
||||
|
||||
let requestedVersion = process.argv[2];
|
||||
|
||||
let dry = false;
|
||||
if (process.argv.includes("--dry")) {
|
||||
dry = true;
|
||||
}
|
||||
|
||||
let verMatched = false;
|
||||
let verMajor = 0;
|
||||
let verMinor = 0;
|
||||
let verPatch = 0;
|
||||
let verDev = undefined;
|
||||
|
||||
// Parse the requested version
|
||||
const releaseVerRegex = /^(\d+)[.](\d+)[.](\d+)$/;
|
||||
const devVerRegex = /^(\d+)[.](\d+)[.](\d+)-dev[.](\d+)$/;
|
||||
|
||||
const releaseMatch = requestedVersion.match(releaseVerRegex);
|
||||
if (releaseMatch) {
|
||||
verMatched = true;
|
||||
verMajor = releaseMatch[1];
|
||||
verMinor = releaseMatch[2];
|
||||
verPatch = releaseMatch[3];
|
||||
}
|
||||
|
||||
if (!verMatched) {
|
||||
const devMatch = requestedVersion.match(devVerRegex);
|
||||
if (devMatch) {
|
||||
verMatched = true;
|
||||
verMajor = devMatch[1];
|
||||
verMinor = devMatch[2];
|
||||
verPatch = devMatch[3];
|
||||
verDev = devMatch[4];
|
||||
}
|
||||
}
|
||||
|
||||
let packages = ["taler-util", "taler-wallet-core", "taler-harness", "taler-wallet-cli"];
|
||||
|
||||
for (const pkg of packages) {
|
||||
const p = `packages/${pkg}/package.json`;
|
||||
const data = JSON.parse(fs.readFileSync(p));
|
||||
console.log(p, data.version);
|
||||
if (!dry) {
|
||||
data.version = requestedVersion;
|
||||
fs.writeFileSync(p, JSON.stringify(data));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
const p = "packages/taler-wallet-webextension/manifest-common.json"
|
||||
const data = JSON.parse(fs.readFileSync(p));
|
||||
console.log("manifest version", data.version);
|
||||
console.log("manifest version_name", data.version_name);
|
||||
// In manifest.json, we transform x.y.z-dev.n info x.y.z.n.
|
||||
// It's necessary because browsers only allow decimals and dots
|
||||
// in that field.
|
||||
let dottedVer = undefined;
|
||||
if (verDev != null) {
|
||||
dottedVer = `${verMajor}.${verMinor}.${verPatch}.${verDev}`;
|
||||
} else {
|
||||
dottedVer = `${verMajor}.${verMinor}.${verPatch}`;
|
||||
}
|
||||
console.log("new manifest version", dottedVer);
|
||||
if (!dry) {
|
||||
data.version = dottedVer;
|
||||
data.version_name = requestedVersion;
|
||||
fs.writeFileSync(p, JSON.stringify(data));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user