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);