@tsed/cli-core
Version:
Build your CLI with TypeScript and Decorators
46 lines (45 loc) • 1.42 kB
JavaScript
import { injector, InjectorService } from "@tsed/di";
import { Logger } from "@tsed/logger";
import { CliConfiguration } from "../services/CliConfiguration.js";
import { ProjectPackageJson } from "../services/ProjectPackageJson.js";
let logger;
export function getLogger() {
return logger;
}
function createConfiguration(injector) {
injector.addProvider(CliConfiguration);
return injector.invoke(CliConfiguration);
}
export function createInjector(settings = {}) {
const inj = injector();
inj.settings = createConfiguration(inj);
logger = inj.logger = new Logger(settings.name || "CLI");
inj.addProvider(ProjectPackageJson);
inj.settings.set(settings);
/* istanbul ignore next */
if (inj.settings.env === "test") {
inj.logger.stop();
}
else {
/* istanbul ignore next */
inj.logger.level = inj.settings.logger?.level || "warn";
inj.logger.appenders
.set("stdout", {
type: "stdout",
layout: {
type: "pattern",
pattern: "[%d{hh:mm:ss}] %m"
},
levels: ["info", "debug"]
})
.set("stderr", {
type: "stderr",
layout: {
type: "pattern",
pattern: "[%d{hh:mm:ss}][%p] %m"
},
levels: ["trace", "fatal", "error", "warn"]
});
}
return inj;
}