From ed4c29f7b6f484bf442d4e3f4be3c6cadfddf6d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro=20Mond=C3=A9jar?=
Date: Fri, 10 Dec 2021 02:02:58 +0100
Subject: [PATCH] Automatically update milestone (SVG count) in README (#6951)
* Automatically update milestone (SVG count) in README
* Use updateRange variale
* Rewrite 2 lines
* Simplify code
* Format new file
* Fix error in script
* Apply suggested changes
---
.github/workflows/create-release.yml | 2 ++
README.md | 2 +-
scripts/release/bump-version.js | 2 +-
scripts/release/update-cdn-urls.js | 2 +-
scripts/release/update-svgs-count.js | 38 ++++++++++++++++++++++++++++
5 files changed, 43 insertions(+), 3 deletions(-)
create mode 100644 scripts/release/update-svgs-count.js
diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml
index 9bf4be3a..9788ccb7 100644
--- a/.github/workflows/create-release.yml
+++ b/.github/workflows/create-release.yml
@@ -45,6 +45,8 @@ jobs:
run: node ./scripts/release/bump-version.js "${{ needs.release-pr.outputs.new-version }}"
- name: Update major version in CDN URLs
run: node ./scripts/release/update-cdn-urls.js
+ - name: Update SVGs count milestone
+ run: node ./scripts/release/update-svgs-count.js
- name: Update slugs table
run: node ./scripts/release/update-slugs-table.js
- name: Commit version bump
diff --git a/README.md b/README.md
index 48c0a934..77a93974 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
Simple Icons
-Over 2000 Free SVG icons for popular brands. See them all on one page at SimpleIcons.org. Contributions, corrections & requests can be made on GitHub.
+Over 2100 Free SVG icons for popular brands. See them all on one page at SimpleIcons.org. Contributions, corrections & requests can be made on GitHub.
diff --git a/scripts/release/bump-version.js b/scripts/release/bump-version.js
index 7755b75d..4072f31d 100644
--- a/scripts/release/bump-version.js
+++ b/scripts/release/bump-version.js
@@ -11,7 +11,7 @@ const rootDir = path.resolve(__dirname, '..', '..');
const packageJsonFile = path.resolve(rootDir, 'package.json');
const readManifest = (file) => {
- const manifestRaw = fs.readFileSync(file).toString();
+ const manifestRaw = fs.readFileSync(file, 'utf-8');
const manifestJson = JSON.parse(manifestRaw);
return manifestJson;
};
diff --git a/scripts/release/update-cdn-urls.js b/scripts/release/update-cdn-urls.js
index a37c0087..be06aa7e 100644
--- a/scripts/release/update-cdn-urls.js
+++ b/scripts/release/update-cdn-urls.js
@@ -18,7 +18,7 @@ const getMajorVersion = (semVerVersion) => {
};
const getManifest = () => {
- const manifestRaw = fs.readFileSync(packageJsonFile).toString();
+ const manifestRaw = fs.readFileSync(packageJsonFile, 'utf-8');
return JSON.parse(manifestRaw);
};
diff --git a/scripts/release/update-svgs-count.js b/scripts/release/update-svgs-count.js
new file mode 100644
index 00000000..a8c48d82
--- /dev/null
+++ b/scripts/release/update-svgs-count.js
@@ -0,0 +1,38 @@
+#!/usr/bin/env node
+/**
+ * @fileoverview
+ * Replaces the SVG count milestone "Over Free SVG icons..." located
+ * at README every time the number of current icons is more than `updateRange`
+ * more than the previous milestone.
+ */
+
+const fs = require('fs');
+const path = require('path');
+
+const regexMatcher = /Over\s(\d+)\s/;
+const updateRange = 100;
+
+const rootDir = path.resolve(__dirname, '..', '..');
+const dataFile = path.resolve(rootDir, '_data', 'simple-icons.json');
+const readmeFile = path.resolve(rootDir, 'README.md');
+const readmeContent = fs.readFileSync(readmeFile, 'utf-8');
+
+let overNIconsInReadme;
+try {
+ overNIconsInReadme = parseInt(regexMatcher.exec(readmeContent)[1]);
+} catch (err) {
+ console.error(
+ 'Failed to obtain number of SVG icons of current milestone in README:',
+ err,
+ );
+ process.exit(1);
+}
+
+const nIcons = require(dataFile).icons.length,
+ newNIcons = overNIconsInReadme + updateRange;
+if (nIcons <= newNIcons) {
+ process.exit(0);
+}
+
+const newContent = readmeContent.replace(regexMatcher, `Over ${newNIcons} `);
+fs.writeFileSync(readmeFile, newContent);