diff --git a/extra/update-version.js b/extra/update-version.js new file mode 100644 index 000000000..797724abf --- /dev/null +++ b/extra/update-version.js @@ -0,0 +1,70 @@ +/** + * String.prototype.replaceAll() polyfill + * https://gomakethings.com/how-to-replace-a-section-of-a-string-with-another-one-with-vanilla-js/ + * @author Chris Ferdinandi + * @license MIT + */ +if (!String.prototype.replaceAll) { + String.prototype.replaceAll = function(str, newStr) { + + // If a regex pattern + if (Object.prototype.toString.call(str).toLowerCase() === "[object regexp]") { + return this.replace(str, newStr); + } + + // If a string + return this.replace(new RegExp(str, "g"), newStr); + + }; +} + +const pkg = require("../package.json"); +const fs = require("fs"); +const child_process = require("child_process"); +const oldVersion = pkg.version; +const newVersion = process.argv[2]; + +console.log("Old Version: " + oldVersion); +console.log("New Version: " + newVersion); + +if (! newVersion) { + console.error("invalid version"); + process.exit(1); +} + +const exists = tagExists(newVersion); + +if (! exists) { + // Process package.json + pkg.version = newVersion; + pkg.scripts.setup = pkg.scripts.setup.replaceAll(oldVersion, newVersion); + pkg.scripts["build-docker"] = pkg.scripts["build-docker"].replaceAll(oldVersion, newVersion); + fs.writeFileSync("package.json", JSON.stringify(pkg, null, 4) + "\n"); + + // Process README.md + fs.writeFileSync("README.md", fs.readFileSync("README.md", "utf8").replaceAll(oldVersion, newVersion)); + + //commit(newVersion); + //tag(newVersion); +} else { + console.log("version exists") +} + +function commit(version) { + let msg = "update to " + version; + child_process.spawnSync("git", ["commit", "-m", msg]); +} + +function tag(version) { + child_process.spawnSync("git", ["tag", version]); +} + +function tagExists(version) { + if (! version) { + throw new Error("invalid version"); + } + + let res = child_process.spawnSync("git", ["tag", "-l", version]); + + return res.stdout.toString().trim() === version; +} diff --git a/extra/version-global-replace.js b/extra/version-global-replace.js deleted file mode 100644 index bf9186567..000000000 --- a/extra/version-global-replace.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * String.prototype.replaceAll() polyfill - * https://gomakethings.com/how-to-replace-a-section-of-a-string-with-another-one-with-vanilla-js/ - * @author Chris Ferdinandi - * @license MIT - */ -if (!String.prototype.replaceAll) { - String.prototype.replaceAll = function(str, newStr){ - - // If a regex pattern - if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') { - return this.replace(str, newStr); - } - - // If a string - return this.replace(new RegExp(str, 'g'), newStr); - - }; -} - -const pkg = require('../package.json'); -const fs = require("fs"); -const oldVersion = pkg.version -const newVersion = process.argv[2] - -console.log("Old Version: " + oldVersion) -console.log("New Version: " + newVersion) - -if (newVersion) { - // Process package.json - pkg.version = newVersion - pkg.scripts.setup = pkg.scripts.setup.replaceAll(oldVersion, newVersion) - pkg.scripts["build-docker"] = pkg.scripts["build-docker"].replaceAll(oldVersion, newVersion) - fs.writeFileSync("package.json", JSON.stringify(pkg, null, 4) + "\n") - - // Process README.md - fs.writeFileSync("README.md", fs.readFileSync("README.md", 'utf8').replaceAll(oldVersion, newVersion)) -} - diff --git a/package.json b/package.json index 07cd3054c..44acd995f 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "build-docker-nightly": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push", "setup": "git checkout 1.0.9 && npm install && npm run build", - "version-global-replace": "node extra/version-global-replace.js", + "update-version": "node extra/update-version.js", "mark-as-nightly": "node extra/mark-as-nightly.js" }, "dependencies": {