From e5fa1bee385a5fe9e2f678b940a501f16b35e298 Mon Sep 17 00:00:00 2001 From: Rob Garrison Date: Sat, 21 Jul 2018 12:16:58 -0500 Subject: [PATCH] Update versions now uses string replacement --- tools/update-versions.js | 42 ++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/tools/update-versions.js b/tools/update-versions.js index 658ac5d9..d5ca1d6d 100644 --- a/tools/update-versions.js +++ b/tools/update-versions.js @@ -5,9 +5,6 @@ const fs = require('fs-extra'); const path = require('path'); const root = path.join(__dirname, '..'); -const manifest = require(`${root}/manifest.json`); -const pkg = require(`${root}/package.json`); - const good = '\x1b[32m%s\x1b[0m'; const warn = '\x1b[36m%s\x1b[0m'; @@ -42,21 +39,32 @@ function compare(v1, v2) { } async function updateVersions() { - const result = compare(manifest.version, pkg.version); - let file, obj; - if (result === 0) { - return console.log(good, 'Manifest & package versions match'); - } else if (result > 0) { - pkg.version = manifest.version; - file = 'package.json'; - obj = pkg; - } else { - manifest.version = pkg.version; - file = 'manifest.json'; - obj = manifest; + const regexp = /"([v\d.]+)"/; + const manifest = await fs.readFile(`${root}/manifest.json`, 'utf8'); + const pkg = await fs.readFile(`${root}/package.json`, 'utf8'); + const manifestVersion = manifest.match(regexp); + const pkgVersion = pkg.match(regexp); + if (manifestVersion && pkgVersion) { + const result = compare(manifestVersion[1], pkgVersion[1]); + let match, version, file, str; + if (result === 0) { + return console.log(good, 'Manifest & package versions match'); + } else if (result > 0) { + match = pkgVersion; + version = manifestVersion[1]; + file = 'package.json'; + str = pkg; + } else { + match = manifestVersion; + version = pkgVersion[1]; + file = 'manifest.json'; + str = manifest; + } + console.log(warn, `Updating ${file} to ${version}`); + str = str.slice(0, match.index + 1) + version + str.slice(match.index + match[1].length + 1); + return fs.writeFile(`${root}/${file}`, str); } - console.log(warn, `Updating ${file} to ${pkg.version}`); - return fs.writeFile(`${root}/${file}`, JSON.stringify(obj, null, ' ') + '\n'); + throw Error(`Error reading ${manifestVersion ? '' : 'manifest.json'} ${pkgVersion ? '' : 'package.json'}`); } updateVersions().catch(err => exit(err));