Browse Source

add report npm packages script

pull/10488/head
mehmet-erim 4 years ago
parent
commit
7c58fa90fb
  1. 2
      npm/scripts/package.json
  2. 87
      npm/scripts/report-npm-packages.ts
  3. 12
      npm/scripts/yarn.lock

2
npm/scripts/package.json

@ -4,9 +4,11 @@
"description": "", "description": "",
"scripts": { "scripts": {
"remove-lock-files": "ts-node -r tsconfig-paths/register remove-lock-files.ts", "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" "validate-versions": "ts-node -r tsconfig-paths/register validate-versions.ts"
}, },
"dependencies": { "dependencies": {
"axios": "^0.24.0",
"chalk": "^4.1.0", "chalk": "^4.1.0",
"commander": "^8.3.0", "commander": "^8.3.0",
"execa": "^5.1.1", "execa": "^5.1.1",

87
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>', 'version to compare')
.requiredOption(
'-ra, --reportApi <report-api-url>',
'api url to report status'
)
.requiredOption(
'-ak, --accessKey <access-key>',
'access key to use for report api'
)
.requiredOption(
'-tc, --targetChannel <target-channel>',
'target channel to send message'
)
.option(
'-r, --registry <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,
});
}

12
npm/scripts/yarn.lock

@ -231,6 +231,13 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428"
integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== 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: balanced-match@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
@ -649,6 +656,11 @@ find-up@^3.0.0:
dependencies: dependencies:
locate-path "^3.0.0" 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: forever-agent@~0.6.1:
version "0.6.1" version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"

Loading…
Cancel
Save