wallet-core/contrib/bump-taler-version.mjs

81 lines
2.1 KiB
JavaScript
Executable File

#!/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));
}
}