Commit f768824e authored by nanahira's avatar nanahira

better plugin check

parent 286c21d3
......@@ -41,13 +41,17 @@ async function getPackageJsonPackages() {
return dependencies;
}
async function checkPluginExists(name: string) {
async function checkPluginExists(
name: string,
allowCommunity: boolean,
allowOfficial: boolean,
) {
const deps = await getPackageJsonPackages();
const entry = Object.entries(deps).find(
([packageName, version]) =>
packageName === name ||
packageName === `@koishijs/plugin-${name}` ||
packageName.endsWith(`koishi-plugin-${name}`),
(allowOfficial && packageName === `@koishijs/plugin-${name}`) ||
(allowCommunity && packageName.endsWith(`koishi-plugin-${name}`)),
);
if (!entry) {
return;
......@@ -90,7 +94,17 @@ async function installPlugin(name: string, info: any) {
return;
}
logger.info(`Installing plugin ${name}@${version || 'unknown'}.`);
const existingPluginVersion = await checkPluginExists(name);
const allowCommunity = !info.$official;
const allowOfficial = !info.$community;
if (!allowCommunity && !allowOfficial) {
logger.warn(`Plugin ${name} is neither official nor community, skipping.`);
return;
}
const existingPluginVersion = await checkPluginExists(
name,
allowCommunity,
allowOfficial,
);
if (
existingPluginVersion &&
(existingPluginVersion === version || !version)
......@@ -105,10 +119,10 @@ async function installPlugin(name: string, info: any) {
if (name.includes(communityPrefix) || name.startsWith(officialPrefix)) {
installList.push(`${name}@${installVersion}`);
} else {
if (!info.$community) {
if (allowOfficial) {
installList.push(`${officialPrefix}${name}@${installVersion}`);
}
if (!info.$official) {
if (allowCommunity) {
installList.push(`${communityPrefix}${name}@${installVersion}`);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment