Commit 69eae1d5 authored by nanahira's avatar nanahira

use original loader

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