Commit 69eae1d5 authored by nanahira's avatar nanahira

use original loader

parent 6dc9d0c0
This diff is collapsed.
......@@ -36,8 +36,9 @@
"typescript": "^4.5.2"
},
"dependencies": {
"@koishijs/cli": "^4.3.2",
"koishi": "^4.3.2",
"@koishijs/cli": "^4.4.0",
"@koishijs/loader": "^1.0.0",
"koishi": "^4.4.0",
"load-json-file": "^6.2.0",
"ws": "^8.2.3",
"yaml": "^1.10.2"
......
export interface PluginInstallConfig {
$install: boolean | string;
$version: string;
}
export interface KoishiConfig {
......
......@@ -5,6 +5,9 @@ import { promisify } from 'util';
import path from 'path';
import { getPackageJsonPackages } from './utils/read-package-json';
import { loadConfig } from './utils/load-config';
import { Loader } from "@koishijs/cli";
import ConfigLoader from "@koishijs/loader";
import { KoishiConfig, PluginInstallConfig } from "./def/interfaces";
const execAsync = promisify(exec);
const logger = new Logger('bootstrap-install-plugin');
......@@ -56,13 +59,15 @@ async function tryInstallPackages(names: string[]) {
}
async function installPlugin(name: string, info: any) {
const version: string =
info.$version ||
(typeof info.$install === 'string' ? info.$install : undefined);
if (name.match(/^([\.\/~\\]|[A-Za-z]:[\/\\])/)) {
logger.info(`Plugin ${name} is a local plugin, skipping.`);
return;
}
const version: string =
info.$version ||
(typeof info.$install === 'string' ? info.$install : undefined);
logger.info(`Installing plugin ${name}@${version || 'unknown'}.`);
const allowCommunity = !info.$official;
const allowOfficial = !info.$community;
......@@ -77,7 +82,7 @@ async function installPlugin(name: string, info: any) {
);
if (
existingPluginVersion &&
(existingPluginVersion === version || !version)
(existingPluginVersion === version || !version || version === '*')
) {
logger.info(`Plugin ${name}@${existingPluginVersion} exists, skipping.`);
return;
......@@ -113,7 +118,7 @@ async function installPlugin(name: string, info: any) {
export async function installPluginEntry() {
logger.info(`Bootstrapping...`);
const config = await loadConfig();
const config = new ConfigLoader<KoishiConfig>().readConfig();
const plugins = config?.plugins;
if (!plugins) {
logger.warn(`No plugins found, exiting.`);
......@@ -122,7 +127,7 @@ export async function installPluginEntry() {
logger.info(`Cleaning NPM cache.`);
await execAsync(`npm cache clean --force`);
for (const [name, info] of Object.entries(plugins)) {
if (!info.$install) {
if (!info.$install || !info.$version) {
continue;
}
await installPlugin(name, info);
......
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