Commit a7eb8b7a authored by nanahira's avatar nanahira

update plugin install

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