From 7c58fa90fbc42a548e4781f44e8c82c5abbd4396 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 1 Nov 2021 14:45:12 +0300 Subject: [PATCH] add report npm packages script --- npm/scripts/package.json | 2 + npm/scripts/report-npm-packages.ts | 87 ++++++++++++++++++++++++++++++ npm/scripts/yarn.lock | 12 +++++ 3 files changed, 101 insertions(+) create mode 100644 npm/scripts/report-npm-packages.ts diff --git a/npm/scripts/package.json b/npm/scripts/package.json index 1984958667..4319a0183a 100644 --- a/npm/scripts/package.json +++ b/npm/scripts/package.json @@ -4,9 +4,11 @@ "description": "", "scripts": { "remove-lock-files": "ts-node -r tsconfig-paths/register remove-lock-files.ts", + "report-npm-packages": "ts-node -r tsconfig-paths/register report-npm-packages.ts", "validate-versions": "ts-node -r tsconfig-paths/register validate-versions.ts" }, "dependencies": { + "axios": "^0.24.0", "chalk": "^4.1.0", "commander": "^8.3.0", "execa": "^5.1.1", diff --git a/npm/scripts/report-npm-packages.ts b/npm/scripts/report-npm-packages.ts new file mode 100644 index 0000000000..d13c062518 --- /dev/null +++ b/npm/scripts/report-npm-packages.ts @@ -0,0 +1,87 @@ +import axios from 'axios'; +import { program } from 'commander'; +import fse from 'fs-extra'; +import * as path from 'path'; + +(async () => { + initCommander(); + await checkPackages(); +})(); + +function initCommander() { + program + .requiredOption('-v, --compareVersion ', 'version to compare') + .requiredOption( + '-ra, --reportApi ', + 'api url to report status' + ) + .requiredOption( + '-ak, --accessKey ', + 'access key to use for report api' + ) + .requiredOption( + '-tc, --targetChannel ', + 'target channel to send message' + ) + .option( + '-r, --registry ', + 'npm server registry, default: https://registry.npmjs.org', + 'https://registry.npmjs.org' + ); + + program.parse(process.argv); +} + +async function checkPackages() { + const pkgJsonPaths = [ + ...fse + .readdirSync('../packs') + .map((folder) => path.resolve(`../packs/${folder}/package.json`)), + ...fse + .readdirSync('../ng-packs/packages') + .map((folder) => + path.resolve(`../ng-packs/packages/${folder}/package.json`) + ), + , + ]; + + const packageNames = pkgJsonPaths + .map((pkgJsonPath) => fse.readJSONSync(pkgJsonPath).name) + .filter((pkg) => !!pkg); + + const { compareVersion } = program.opts(); + + let discordMessage = `NPM Packages Publish Status\nVersion: **${compareVersion}**\n\n`; + + for (let i = 0; i < packageNames.length; i++) { + const packageName = packageNames[i]; + + const lastVersion = await axios + .get(`https://registry.npmjs.org/${packageName}`) + .then((res) => { + const versions = Object.keys(res.data.time); + // console.log(packageName, versions[versions.length - 1]); + return versions[versions.length - 1]; + }); + + let message; + if (lastVersion === compareVersion) { + message = `${packageName}: :ballot_box_with_check:\n`; + } else { + message = `${packageName}: :x:\n`; + } + + discordMessage += message; + console.log( + message.replace(':ballot_box_with_check:', '✔️').replace(':x', '✖️') + ); + } + + const { reportApi, targetChannel, accessKey } = program.opts(); + + await axios.post(reportApi, { + accessKey, + targetChannel, + message: discordMessage, + }); +} diff --git a/npm/scripts/yarn.lock b/npm/scripts/yarn.lock index a54c6f9bd6..bae2201646 100644 --- a/npm/scripts/yarn.lock +++ b/npm/scripts/yarn.lock @@ -231,6 +231,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== +axios@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" + integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== + dependencies: + follow-redirects "^1.14.4" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -649,6 +656,11 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +follow-redirects@^1.14.4: + version "1.14.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" + integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"