From e049e1d5a5bb12a108ee2d1ee47e92813540eeee Mon Sep 17 00:00:00 2001 From: Eric Cornelissen Date: Wed, 5 May 2021 23:29:49 +0200 Subject: [PATCH] Auto update CDN URLs in README.md in release PR (#5545) * Add script to bump major version in README On lines 29-32, we could alternatively use `replaceAll`, I opted not to as it is not yet(?) part of an LTS release of NodeJS. * Bump CDN version in README automatically for new releases * Rename "bump-cdn-version.js" to "update-cdn-urls.js" * Update names of file-level constants in update-cdn-urls.js * Rename workflow setp for updating CDN URLs * Rename packageJsonFile constant in update-cdn-urls * Remove semver dependency * Generalize update-cdn-urls script --- .github/workflows/create-release.yml | 2 ++ scripts/update-cdn-urls.js | 47 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 scripts/update-cdn-urls.js diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index e60e502d9..8198d3641 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -27,6 +27,8 @@ jobs: ref: develop - name: Bump version run: node ./scripts/bump-version.js "${{ needs.release-pr.outputs.new-version }}" + - name: Update major version in CDN URLs + run: node ./scripts/update-cdn-urls.js - name: Update slugs table run: node ./scripts/build-slugs-table.js - name: Commit version bump diff --git a/scripts/update-cdn-urls.js b/scripts/update-cdn-urls.js new file mode 100644 index 000000000..735f8dab4 --- /dev/null +++ b/scripts/update-cdn-urls.js @@ -0,0 +1,47 @@ +#!/usr/bin/env node +/** + * @fileoverview + * Updates the CDN URLs in the README.md to match the major version in the + * NPM package manifest. Does nothing if the README.md is already up-to-date. + */ + +const fs = require("fs"); +const path = require("path"); + +const rootDir = path.resolve(__dirname, ".."); +const packageJsonFile = path.resolve(rootDir, "package.json"); +const readmeFile = path.resolve(rootDir, "README.md"); + +function getMajorVersion(semVerVersion) { + const majorVersionAsString = semVerVersion.split('.')[0]; + return parseInt(majorVersionAsString); +} + +function getManifest() { + const manifestRaw = fs.readFileSync(packageJsonFile).toString(); + return JSON.parse(manifestRaw); +} + +function updateVersionInReadmeIfNecessary(majorVersion) { + let content = fs.readFileSync(readmeFile).toString(); + + content = content.replace( + /simple-icons@v[0-9]+/g, + `simple-icons@v${majorVersion}`, + ); + + fs.writeFileSync(readmeFile, content); +} + +function main() { + try { + const manifest = getManifest(); + const majorVersion = getMajorVersion(manifest.version); + updateVersionInReadmeIfNecessary(majorVersion); + } catch (error) { + console.error("Failed to update CDN version number:", error); + process.exit(1); + } +} + +main();