@tsed/cli
Version:
CLI to bootstrap your Ts.ED project
50 lines (49 loc) • 1.52 kB
JavaScript
import { CliPlugins, command, inject, PackageManagersModule, ProjectPackageJson } from "@tsed/cli-core";
export class AddCmd {
constructor() {
this.cliPlugins = inject(CliPlugins);
this.packageJson = inject(ProjectPackageJson);
this.packageManagers = inject(PackageManagersModule);
}
$prompt(initialOptions) {
return [
{
type: "autocomplete",
name: "name",
message: "Which cli plugin ?",
default: initialOptions.name,
when: !initialOptions.name,
source: () => this.cliPlugins.searchPlugins()
}
];
}
$exec(ctx) {
this.packageJson.addDevDependency(ctx.name, "latest");
return [
this.packageManagers.task("Install plugins", ctx),
{
title: "Load plugins",
task: () => this.cliPlugins.loadPlugins()
},
{
title: "Install plugins dependencies",
task: () => this.cliPlugins.addPluginsDependencies(ctx)
},
{
title: "Transform files",
task: () => this.cliPlugins.addPluginsDependencies(ctx)
}
];
}
}
command({
token: AddCmd,
name: "add",
description: "Add cli plugin to the current project",
args: {
name: {
description: "Npm package name of the cli plugin",
type: String
}
}
});