Commit a7eb8b7a authored by nanahira's avatar nanahira

update plugin install

parent 4ce1adb4
......@@ -83,7 +83,8 @@ async function tryInstallPackages(names: string[]) {
return false;
}
async function installPlugin(name: string, version?: string) {
async function installPlugin(name: string, info: any) {
const version: string = info.$version || info.$install;
if (name.match(/^([\.\/~\\]|[A-Za-z]:[\/\\])/)) {
logger.info(`Plugin ${name} is a local plugin, skipping.`);
return;
......@@ -100,24 +101,21 @@ async function installPlugin(name: string, version?: string) {
const installList: string[] = [];
const communityPrefix = 'koishi-plugin-';
const officialPrefix = '@koishijs/plugin-';
const installVersion = version || 'latest';
if (name.includes(communityPrefix) || name.startsWith(officialPrefix)) {
if (version) {
installList.push(`${name}@${version}`);
installList.push(`${name}@${installVersion}`);
} else {
installList.push(`${name}@latest`);
installList.push(`${name}@next`);
if (!info.$community) {
installList.push(`${officialPrefix}${name}@${installVersion}`);
}
} else {
if (version) {
installList.push(`${officialPrefix}${name}@${version}`);
installList.push(`${communityPrefix}${name}@${version}`);
} else {
installList.push(`${officialPrefix}${name}@next`);
installList.push(`${officialPrefix}${name}@latest`);
installList.push(`${communityPrefix}${name}@next`);
installList.push(`${communityPrefix}${name}@latest`);
if (!info.$official) {
installList.push(`${communityPrefix}${name}@${installVersion}`);
}
}
if (!installList.length) {
logger.warn(`Plugin ${name} has nothing to install.`);
return;
}
const result = await tryInstallPackages(installList);
if (!result) {
logger.error(`Plugin ${name}@${version || 'unknown'} install failed.`);
......@@ -140,7 +138,7 @@ async function main() {
}
const version =
typeof info.$install !== 'boolean' ? info.$install : undefined;
await installPlugin(name, version);
await installPlugin(name, info);
}
logger.info(`Bootstrap finished.`);
}
......
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