mirror of https://github.com/abpframework/abp.git
csharpabpc-sharpframeworkblazoraspnet-coredotnet-coreaspnetcorearchitecturesaasdomain-driven-designangularmulti-tenancy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.2 KiB
87 lines
2.2 KiB
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,
|
|
});
|
|
}
|
|
|