summaryrefslogtreecommitdiffstats
path: root/extra/beta/update-version.js
diff options
context:
space:
mode:
Diffstat (limited to 'extra/beta/update-version.js')
-rw-r--r--extra/beta/update-version.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/extra/beta/update-version.js b/extra/beta/update-version.js
new file mode 100644
index 0000000..9ab0015
--- /dev/null
+++ b/extra/beta/update-version.js
@@ -0,0 +1,84 @@
+const pkg = require("../../package.json");
+const fs = require("fs");
+const childProcess = require("child_process");
+const util = require("../../src/util");
+
+util.polyfill();
+
+const version = process.env.RELEASE_BETA_VERSION;
+
+console.log("Beta Version: " + version);
+
+if (!version || !version.includes("-beta.")) {
+ console.error("invalid version, beta version only");
+ process.exit(1);
+}
+
+const exists = tagExists(version);
+
+if (! exists) {
+ // Process package.json
+ pkg.version = version;
+ fs.writeFileSync("package.json", JSON.stringify(pkg, null, 4) + "\n");
+
+ // Also update package-lock.json
+ const npm = /^win/.test(process.platform) ? "npm.cmd" : "npm";
+ childProcess.spawnSync(npm, [ "install" ]);
+
+ commit(version);
+ tag(version);
+
+} else {
+ console.log("version tag exists, please delete the tag or use another tag");
+ process.exit(1);
+}
+
+/**
+ * Commit updated files
+ * @param {string} version Version to update to
+ * @returns {void}
+ * @throws Error committing files
+ */
+function commit(version) {
+ let msg = "Update to " + version;
+
+ let res = childProcess.spawnSync("git", [ "commit", "-m", msg, "-a" ]);
+ let stdout = res.stdout.toString().trim();
+ console.log(stdout);
+
+ if (stdout.includes("no changes added to commit")) {
+ throw new Error("commit error");
+ }
+
+ res = childProcess.spawnSync("git", [ "push", "origin", "master" ]);
+ console.log(res.stdout.toString().trim());
+}
+
+/**
+ * Create a tag with the specified version
+ * @param {string} version Tag to create
+ * @returns {void}
+ */
+function tag(version) {
+ let res = childProcess.spawnSync("git", [ "tag", version ]);
+ console.log(res.stdout.toString().trim());
+
+ res = childProcess.spawnSync("git", [ "push", "origin", version ]);
+ console.log(res.stdout.toString().trim());
+}
+
+/**
+ * Check if a tag exists for the specified version
+ * @param {string} version Version to check
+ * @returns {boolean} Does the tag already exist
+ * @throws Version is not valid
+ */
+function tagExists(version) {
+ if (! version) {
+ throw new Error("invalid version");
+ }
+
+ let res = childProcess.spawnSync("git", [ "tag", "-l", version ]);
+
+ return res.stdout.toString().trim() === version;
+}