@tsed/cli-core
Version:
Build your CLI with TypeScript and Decorators
29 lines (28 loc) • 1.16 kB
JavaScript
import { taskLogger } from "@tsed/cli-tasks";
import { injector, lazyInject, logger } from "@tsed/di";
import chalk from "chalk";
import figures from "figures";
import { CliFs } from "../services/CliFs.js";
import { ProjectPackageJson } from "../services/ProjectPackageJson.js";
const all = (promises) => Promise.all(promises);
export async function loadPlugins() {
const $inj = injector();
const name = $inj.settings.get("name");
const projectPackageJson = $inj.invoke(ProjectPackageJson);
const fs = $inj.invoke(CliFs);
const promises = Object.keys(projectPackageJson.allDependencies)
.filter((mod) => mod.startsWith(`@${name}/cli-plugin`) || mod.includes(`${name}-cli-plugin`))
.map(async (mod) => {
try {
if ($inj.settings.get("loaded")) {
taskLogger().info(`Try to load ${mod}`);
await lazyInject(() => fs.importModule(mod, projectPackageJson.cwd));
}
taskLogger().info(`${mod} module loaded`);
}
catch (er) {
taskLogger().warn(`Fail to load plugin ${mod} ${er.message}`);
}
});
await all(promises);
}