diff --git a/contrib/bump-taler-version.mjs b/contrib/bump-taler-version.mjs new file mode 100755 index 000000000..a51ed9ad6 --- /dev/null +++ b/contrib/bump-taler-version.mjs @@ -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)); + } +}