aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/sync-manifest-version.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/scripts/sync-manifest-version.js b/scripts/sync-manifest-version.js
new file mode 100644
index 0000000..b5515af
--- /dev/null
+++ b/scripts/sync-manifest-version.js
@@ -0,0 +1,37 @@
+#!/usr/bin/env node
+// Sync browser-extension/manifest.json version from package.json.
+// Run automatically by the `version` npm lifecycle hook (npm version <bump>),
+// and pre-publish, so the Chrome extension version never drifts from the npm
+// package version.
+const { readFileSync, writeFileSync } = require("node:fs");
+const { join } = require("node:path");
+
+const pkgPath = join(__dirname, "..", "package.json");
+const manifestPath = join(
+ __dirname,
+ "..",
+ "extensions",
+ "chrome-profile-bridge",
+ "browser-extension",
+ "manifest.json",
+);
+
+const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
+const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
+
+if (manifest.version === pkg.version) {
+ console.log(`manifest.json already at ${pkg.version}`);
+ process.exit(0);
+}
+
+const prev = manifest.version;
+manifest.version = pkg.version;
+writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + "\n");
+console.log(`manifest.json ${prev} -> ${pkg.version}`);
+
+// Stage so `npm version` includes manifest bump in the version commit.
+try {
+ require("node:child_process").execSync(`git add "${manifestPath}"`, { stdio: "ignore" });
+} catch {
+ /* not in a git checkout - ok */
+}