2023-03-29 19:31:17 +02:00
|
|
|
#!/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];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-08 18:59:44 +02:00
|
|
|
let packages = ["taler-util", "taler-wallet-core", "taler-harness", "taler-wallet-cli", "web-util", "taler-wallet-webextension", "taler-wallet-embedded"];
|
2023-03-29 19:31:17 +02:00
|
|
|
|
|
|
|
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;
|
2023-03-29 19:45:45 +02:00
|
|
|
fs.writeFileSync(p, JSON.stringify(data, undefined, 2));
|
2023-03-29 19:31:17 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
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;
|
2023-03-29 19:45:45 +02:00
|
|
|
fs.writeFileSync(p, JSON.stringify(data, undefined, 2));
|
2023-03-29 19:31:17 +02:00
|
|
|
}
|
|
|
|
}
|