@tsed/cli-core 3.23.0 → 3.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,19 +35,16 @@ let CliCore = CliCore_1 = class CliCore {
35
35
  }
36
36
  return this;
37
37
  }
38
- static async bootstrap(settings, module = CliCore_1) {
38
+ static async create(settings, module = CliCore_1) {
39
39
  const injector = this.createInjector(settings);
40
40
  settings.plugins && (await (0, loadPlugins_1.loadPlugins)(injector));
41
41
  await this.loadInjector(injector, module);
42
42
  await injector.emit("$onReady");
43
- const cli = injector.get(CliCore_1);
44
- try {
45
- await cli.cliService.parseArgs(injector.settings.get("argv"));
46
- }
47
- catch (er) {
48
- throw new CliError_1.CliError({ origin: er, cli });
49
- }
50
- return cli;
43
+ return injector.get(CliCore_1);
44
+ }
45
+ static async bootstrap(settings, module = CliCore_1) {
46
+ const cli = await this.create(settings, module);
47
+ return cli.bootstrap();
51
48
  }
52
49
  static async loadInjector(injector, module = CliCore_1) {
53
50
  await injector.emit("$beforeInit");
@@ -81,6 +78,15 @@ let CliCore = CliCore_1 = class CliCore {
81
78
  }
82
79
  return process.cwd();
83
80
  }
81
+ async bootstrap() {
82
+ try {
83
+ await this.cliService.parseArgs(this.injector.settings.get("argv"));
84
+ }
85
+ catch (er) {
86
+ throw new CliError_1.CliError({ origin: er, cli: this });
87
+ }
88
+ return this;
89
+ }
84
90
  };
85
91
  tslib_1.__decorate([
86
92
  (0, di_1.Inject)(),
@@ -1 +1 @@
1
- {"version":3,"file":"CliCore.js","sourceRoot":"","sources":["../../src/CliCore.ts"],"names":[],"mappings":"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","sourcesContent":["import {createContainer, Inject, InjectorService, Module} from \"@tsed/di\";\nimport {Type} from \"@tsed/core\";\nimport chalk from \"chalk\";\nimport {Command} from \"commander\";\nimport {join, resolve} from \"path\";\nimport updateNotifier from \"update-notifier\";\nimport {CliConfiguration} from \"./services/CliConfiguration\";\nimport {CliPackageJson} from \"./services/CliPackageJson\";\nimport {CliService} from \"./services/CliService\";\nimport {ProjectPackageJson} from \"./services/ProjectPackageJson\";\nimport {createInjector} from \"./utils/createInjector\";\nimport {loadPlugins} from \"./utils/loadPlugins\";\nimport {CliError} from \"./domains/CliError\";\nimport semver from \"semver\";\n\nfunction isHelpManual(argv: string[]) {\n return argv.includes(\"-h\") || argv.includes(\"--help\");\n}\n\n@Module({\n imports: [CliPackageJson, ProjectPackageJson, CliService, CliConfiguration]\n})\nexport class CliCore {\n @Inject()\n injector: InjectorService;\n\n @Inject()\n cliService: CliService;\n\n static checkNodeVersion(wanted: string, id: string) {\n if (!semver.satisfies(process.version, wanted)) {\n console.log(\n chalk.red(\n \"You are using Node \" +\n process.version +\n \", but this version of \" +\n id +\n \" requires Node \" +\n wanted +\n \".\\nPlease upgrade your Node version.\"\n )\n );\n process.exit(1);\n }\n\n return this;\n }\n\n static async bootstrap(settings: Partial<TsED.Configuration>, module: Type = CliCore): Promise<CliCore> {\n const injector = this.createInjector(settings);\n\n settings.plugins && (await loadPlugins(injector));\n\n await this.loadInjector(injector, module);\n\n await injector.emit(\"$onReady\");\n\n const cli = injector.get<CliCore>(CliCore)!;\n\n try {\n await cli.cliService.parseArgs(injector.settings.get(\"argv\")!);\n } catch (er) {\n throw new CliError({origin: er, cli});\n }\n\n return cli;\n }\n\n static async loadInjector(injector: InjectorService, module: Type = CliCore) {\n await injector.emit(\"$beforeInit\");\n\n const container = createContainer();\n\n await injector.load(container, module);\n\n await injector.emit(\"$afterInit\");\n\n injector.settings.set(\"loaded\", true);\n }\n\n static updateNotifier(pkg: any) {\n updateNotifier({pkg, updateCheckInterval: 0}).notify();\n return this;\n }\n\n protected static createInjector(settings: Partial<TsED.Configuration>) {\n const argv = settings.argv || process.argv;\n\n return createInjector({\n ...settings,\n name: settings.name || \"tsed\",\n argv,\n project: {\n rootDir: this.getProjectRoot(argv),\n srcDir: \"src\",\n scriptsDir: \"scripts\",\n ...(settings.project || {})\n }\n });\n }\n\n protected static getProjectRoot(argv: string[]) {\n if (!isHelpManual(argv)) {\n const projectRoot =\n new Command().option(\"-r, --root-dir <path>\", \"Project root directory\").allowUnknownOption(true).parse(argv).opts().rootDir || \"\";\n\n return resolve(join(process.cwd(), projectRoot));\n }\n\n return process.cwd();\n }\n}\n"]}
1
+ {"version":3,"file":"CliCore.js","sourceRoot":"","sources":["../../src/CliCore.ts"],"names":[],"mappings":"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","sourcesContent":["import {createContainer, Inject, InjectorService, Module} from \"@tsed/di\";\nimport {Type} from \"@tsed/core\";\nimport chalk from \"chalk\";\nimport {Command} from \"commander\";\nimport {join, resolve} from \"path\";\nimport updateNotifier from \"update-notifier\";\nimport {CliConfiguration} from \"./services/CliConfiguration\";\nimport {CliPackageJson} from \"./services/CliPackageJson\";\nimport {CliService} from \"./services/CliService\";\nimport {ProjectPackageJson} from \"./services/ProjectPackageJson\";\nimport {createInjector} from \"./utils/createInjector\";\nimport {loadPlugins} from \"./utils/loadPlugins\";\nimport {CliError} from \"./domains/CliError\";\nimport semver from \"semver\";\n\nfunction isHelpManual(argv: string[]) {\n return argv.includes(\"-h\") || argv.includes(\"--help\");\n}\n\n@Module({\n imports: [CliPackageJson, ProjectPackageJson, CliService, CliConfiguration]\n})\nexport class CliCore {\n @Inject()\n readonly injector: InjectorService;\n\n @Inject()\n readonly cliService: CliService;\n\n static checkNodeVersion(wanted: string, id: string) {\n if (!semver.satisfies(process.version, wanted)) {\n console.log(\n chalk.red(\n \"You are using Node \" +\n process.version +\n \", but this version of \" +\n id +\n \" requires Node \" +\n wanted +\n \".\\nPlease upgrade your Node version.\"\n )\n );\n process.exit(1);\n }\n\n return this;\n }\n\n static async create<Cli extends CliCore = CliCore>(settings: Partial<TsED.Configuration>, module: Type = CliCore): Promise<Cli> {\n const injector = this.createInjector(settings);\n\n settings.plugins && (await loadPlugins(injector));\n\n await this.loadInjector(injector, module);\n\n await injector.emit(\"$onReady\");\n\n return injector.get<Cli>(CliCore)!;\n }\n\n static async bootstrap(settings: Partial<TsED.Configuration>, module: Type = CliCore) {\n const cli = await this.create(settings, module);\n\n return cli.bootstrap();\n }\n\n static async loadInjector(injector: InjectorService, module: Type = CliCore) {\n await injector.emit(\"$beforeInit\");\n\n const container = createContainer();\n\n await injector.load(container, module);\n\n await injector.emit(\"$afterInit\");\n\n injector.settings.set(\"loaded\", true);\n }\n\n static updateNotifier(pkg: any) {\n updateNotifier({pkg, updateCheckInterval: 0}).notify();\n return this;\n }\n\n protected static createInjector(settings: Partial<TsED.Configuration>) {\n const argv = settings.argv || process.argv;\n\n return createInjector({\n ...settings,\n name: settings.name || \"tsed\",\n argv,\n project: {\n rootDir: this.getProjectRoot(argv),\n srcDir: \"src\",\n scriptsDir: \"scripts\",\n ...(settings.project || {})\n }\n });\n }\n\n protected static getProjectRoot(argv: string[]) {\n if (!isHelpManual(argv)) {\n const projectRoot =\n new Command().option(\"-r, --root-dir <path>\", \"Project root directory\").allowUnknownOption(true).parse(argv).opts().rootDir || \"\";\n\n return resolve(join(process.cwd(), projectRoot));\n }\n\n return process.cwd();\n }\n\n async bootstrap() {\n try {\n await this.cliService.parseArgs(this.injector.settings.get(\"argv\")!);\n } catch (er) {\n throw new CliError({origin: er, cli: this});\n }\n\n return this;\n }\n}\n"]}
@@ -45,6 +45,9 @@ let CliService = class CliService {
45
45
  async runLifecycle(cmdName, data = {}) {
46
46
  data = await this.beforePrompt(cmdName, data);
47
47
  data = await this.prompt(cmdName, data);
48
+ await this.dispatch(cmdName, data);
49
+ }
50
+ async dispatch(cmdName, data) {
48
51
  try {
49
52
  await this.exec(cmdName, data);
50
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CliService.js","sourceRoot":"","sources":["../../../src/services/CliService.ts"],"names":[],"mappings":"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","sourcesContent":["import {classOf} from \"@tsed/core\";\nimport {Constant, Inject, Injectable, InjectorService, Provider} from \"@tsed/di\";\nimport {Argument, Command} from \"commander\";\nimport Inquirer from \"inquirer\";\nimport {CommandStoreKeys} from \"../domains/CommandStoreKeys\";\nimport {CommandProvider} from \"../interfaces/CommandProvider\";\nimport {CommandMetadata} from \"../interfaces/CommandMetadata\";\nimport {CommandArg, CommandOptions} from \"../interfaces/CommandParameters\";\nimport {PROVIDER_TYPE_COMMAND} from \"../registries/CommandRegistry\";\nimport {createSubTasks, createTasksRunner} from \"../utils/createTasksRunner\";\nimport {getCommandMetadata} from \"../utils/getCommandMetadata\";\nimport {mapCommanderArgs} from \"../utils/mapCommanderArgs\";\nimport {mapCommanderOptions} from \"../utils/mapCommanderOptions\";\nimport {parseOption} from \"../utils/parseOption\";\nimport {CliHooks} from \"./CliHooks\";\nimport {ProjectPackageJson} from \"./ProjectPackageJson\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport inquirer_autocomplete_prompt from \"inquirer-autocomplete-prompt\";\n\nInquirer.registerPrompt(\"autocomplete\", inquirer_autocomplete_prompt);\n\n@Injectable()\nexport class CliService {\n readonly program = new Command();\n\n @Constant(\"project.reinstallAfterRun\", false)\n reinstallAfterRun = false;\n\n @Constant(\"pkg\", {version: \"1.0.0\"})\n protected pkg: any;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected hooks: CliHooks;\n\n @Inject()\n protected projectPkg: ProjectPackageJson;\n\n private commands = new Map();\n\n /**\n * Parse process.argv and runLifecycle action\n * @param argv\n */\n async parseArgs(argv: string[]): Promise<void> {\n const {program} = this;\n\n program.version(this.pkg.version);\n\n this.load();\n\n await program.parseAsync(argv);\n }\n\n /**\n * Run lifecycle\n * @param cmdName\n * @param data\n */\n public async runLifecycle(cmdName: string, data: any = {}) {\n data = await this.beforePrompt(cmdName, data);\n data = await this.prompt(cmdName, data);\n\n try {\n await this.exec(cmdName, data);\n } catch (er) {\n await this.injector.emit(\"$onFinish\", er);\n await this.injector.destroy();\n throw er;\n }\n\n await this.injector.emit(\"$onFinish\");\n await this.injector.destroy();\n }\n\n public async exec(cmdName: string, ctx: any) {\n const initialTasks = await this.getTasks(cmdName, ctx);\n\n if (initialTasks.length) {\n const tasks = [\n ...initialTasks,\n {\n title: \"Install dependencies\",\n enabled: () => this.reinstallAfterRun && (this.projectPkg.rewrite || this.projectPkg.reinstall),\n task: createSubTasks(() => this.projectPkg.install(ctx), {...ctx, concurrent: false})\n },\n ...(await this.getPostInstallTasks(cmdName, ctx))\n ];\n\n return createTasksRunner(tasks, this.mapContext(cmdName, ctx));\n }\n }\n\n /**\n * Run prompt for a given command\n * @param cmdName\n * @param ctx Initial data\n */\n public async beforePrompt(cmdName: string, ctx: any = {}) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n const verbose = ctx.verbose;\n\n if (instance.$beforePrompt) {\n ctx = await instance.$beforePrompt(JSON.parse(JSON.stringify(ctx)));\n ctx.verbose = verbose;\n }\n return ctx;\n }\n\n /**\n * Run prompt for a given command\n * @param cmdName\n * @param ctx Initial data\n */\n public async prompt(cmdName: string, ctx: any = {}) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n\n if (instance.$prompt) {\n const questions = [\n ...((await instance.$prompt(ctx)) as any[]),\n ...(await this.hooks.emit(CommandStoreKeys.PROMPT_HOOKS, cmdName, ctx))\n ];\n\n if (questions.length) {\n ctx = {\n ...ctx,\n ...((await Inquirer.prompt(questions)) as any)\n };\n }\n }\n\n return ctx;\n }\n\n /**\n * Run lifecycle\n * @param cmdName\n * @param ctx\n */\n public async getTasks(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.token)!;\n\n ctx = this.mapContext(cmdName, ctx);\n\n if (instance.$beforeExec) {\n await instance.$beforeExec(ctx);\n }\n\n return [...(await instance.$exec(ctx)), ...(await this.hooks.emit(CommandStoreKeys.EXEC_HOOKS, cmdName, ctx))];\n }\n\n public async getPostInstallTasks(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n\n ctx = this.mapContext(cmdName, ctx);\n\n return [\n ...(instance.$postInstall ? await instance.$postInstall(ctx) : []),\n ...(await this.hooks.emit(CommandStoreKeys.POST_INSTALL_HOOKS, cmdName, ctx)),\n ...(instance.$afterPostInstall ? await instance.$afterPostInstall(ctx) : [])\n ];\n }\n\n public createCommand(metadata: CommandMetadata) {\n const {args, name, options, description, alias, allowUnknownOption} = metadata;\n\n if (this.commands.has(name)) {\n return this.commands.get(name).command;\n }\n\n let cmd = this.program.command(name);\n\n const onAction = (...commanderArgs: any[]) => {\n const [, ...rawArgs] = cmd.args;\n const data = {\n verbose: !!this.program.opts().verbose,\n ...mapCommanderArgs(args, commanderArgs),\n ...mapCommanderOptions(this.program.commands),\n rawArgs\n };\n\n return this.runLifecycle(name, data);\n };\n\n if (alias) {\n cmd = cmd.alias(alias);\n }\n\n cmd = cmd.description(description);\n cmd = this.buildArguments(cmd, args);\n\n cmd = cmd.action(onAction);\n\n if (options) {\n cmd = this.buildOption(cmd, options, !!allowUnknownOption);\n }\n\n return cmd;\n }\n\n private load() {\n this.injector.getProviders(PROVIDER_TYPE_COMMAND).forEach((provider) => this.build(provider));\n }\n\n private mapContext(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n const verbose = ctx.verbose;\n\n if (instance.$mapContext) {\n ctx = instance.$mapContext(JSON.parse(JSON.stringify(ctx)));\n ctx.verbose = verbose;\n }\n\n if (ctx.verbose) {\n this.injector.logger.level = \"debug\";\n } else {\n this.injector.logger.level = \"info\";\n }\n\n return ctx;\n }\n\n /**\n * Build command and sub-commands\n * @param provider\n */\n private build(provider: Provider<any>) {\n const metadata = getCommandMetadata(provider.useClass);\n\n if (metadata.name) {\n if (this.commands.has(metadata.name)) {\n throw Error(\n `The ${metadata.name} command is already registered. Change your command name used by the class ${classOf(provider.useClass)}`\n );\n }\n\n provider.command = this.createCommand(metadata);\n\n this.commands.set(metadata.name, provider);\n }\n }\n\n /**\n * Build sub-command options\n * @param subCommand\n * @param options\n * @param allowUnknownOptions\n */\n private buildOption(subCommand: Command, options: {[key: string]: CommandOptions}, allowUnknownOptions: boolean) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Object.entries(options).reduce((subCommand, [flags, {description, required, customParser, defaultValue, ...options}]) => {\n const fn = (v: any) => parseOption(v, options);\n\n if (options.type === Boolean) {\n defaultValue = false;\n }\n\n return required\n ? subCommand.requiredOption(flags, description, fn, defaultValue)\n : subCommand.option(flags, description, fn, defaultValue);\n }, subCommand);\n\n subCommand.option(\"-r, --root-dir <path>\", \"Project root directory\");\n subCommand.option(\"--verbose\", \"Verbose mode\", () => true);\n\n if (allowUnknownOptions) {\n subCommand.allowUnknownOption(true);\n }\n\n return subCommand;\n }\n\n private buildArguments(cmd: Command, args: Record<string, CommandArg>) {\n return Object.entries(args).reduce((cmd, [key, {description, required, defaultValue}]) => {\n const argument = new Argument(required ? `<${key}>` : `[${key}]`, description);\n\n if (defaultValue !== undefined) {\n argument.default(defaultValue);\n }\n\n return cmd.addArgument(argument);\n }, cmd);\n }\n}\n"]}
1
+ {"version":3,"file":"CliService.js","sourceRoot":"","sources":["../../../src/services/CliService.ts"],"names":[],"mappings":"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","sourcesContent":["import {classOf} from \"@tsed/core\";\nimport {Constant, Inject, Injectable, InjectorService, Provider} from \"@tsed/di\";\nimport {Argument, Command} from \"commander\";\nimport Inquirer from \"inquirer\";\nimport {CommandStoreKeys} from \"../domains/CommandStoreKeys\";\nimport {CommandProvider} from \"../interfaces/CommandProvider\";\nimport {CommandMetadata} from \"../interfaces/CommandMetadata\";\nimport {CommandArg, CommandOptions} from \"../interfaces/CommandParameters\";\nimport {PROVIDER_TYPE_COMMAND} from \"../registries/CommandRegistry\";\nimport {createSubTasks, createTasksRunner} from \"../utils/createTasksRunner\";\nimport {getCommandMetadata} from \"../utils/getCommandMetadata\";\nimport {mapCommanderArgs} from \"../utils/mapCommanderArgs\";\nimport {mapCommanderOptions} from \"../utils/mapCommanderOptions\";\nimport {parseOption} from \"../utils/parseOption\";\nimport {CliHooks} from \"./CliHooks\";\nimport {ProjectPackageJson} from \"./ProjectPackageJson\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport inquirer_autocomplete_prompt from \"inquirer-autocomplete-prompt\";\n\nInquirer.registerPrompt(\"autocomplete\", inquirer_autocomplete_prompt);\n\n@Injectable()\nexport class CliService {\n readonly program = new Command();\n\n @Constant(\"project.reinstallAfterRun\", false)\n reinstallAfterRun = false;\n\n @Constant(\"pkg\", {version: \"1.0.0\"})\n protected pkg: any;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected hooks: CliHooks;\n\n @Inject()\n protected projectPkg: ProjectPackageJson;\n\n private commands = new Map();\n\n /**\n * Parse process.argv and runLifecycle action\n * @param argv\n */\n async parseArgs(argv: string[]): Promise<void> {\n const {program} = this;\n\n program.version(this.pkg.version);\n\n this.load();\n\n await program.parseAsync(argv);\n }\n\n /**\n * Run lifecycle\n * @param cmdName\n * @param data\n */\n public async runLifecycle(cmdName: string, data: any = {}) {\n data = await this.beforePrompt(cmdName, data);\n data = await this.prompt(cmdName, data);\n\n await this.dispatch(cmdName, data);\n }\n\n public async dispatch(cmdName: string, data: any) {\n try {\n await this.exec(cmdName, data);\n } catch (er) {\n await this.injector.emit(\"$onFinish\", er);\n await this.injector.destroy();\n throw er;\n }\n\n await this.injector.emit(\"$onFinish\");\n await this.injector.destroy();\n }\n\n public async exec(cmdName: string, ctx: any) {\n const initialTasks = await this.getTasks(cmdName, ctx);\n\n if (initialTasks.length) {\n const tasks = [\n ...initialTasks,\n {\n title: \"Install dependencies\",\n enabled: () => this.reinstallAfterRun && (this.projectPkg.rewrite || this.projectPkg.reinstall),\n task: createSubTasks(() => this.projectPkg.install(ctx), {...ctx, concurrent: false})\n },\n ...(await this.getPostInstallTasks(cmdName, ctx))\n ];\n\n return createTasksRunner(tasks, this.mapContext(cmdName, ctx));\n }\n }\n\n /**\n * Run prompt for a given command\n * @param cmdName\n * @param ctx Initial data\n */\n public async beforePrompt(cmdName: string, ctx: any = {}) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n const verbose = ctx.verbose;\n\n if (instance.$beforePrompt) {\n ctx = await instance.$beforePrompt(JSON.parse(JSON.stringify(ctx)));\n ctx.verbose = verbose;\n }\n return ctx;\n }\n\n /**\n * Run prompt for a given command\n * @param cmdName\n * @param ctx Initial data\n */\n public async prompt(cmdName: string, ctx: any = {}) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n\n if (instance.$prompt) {\n const questions = [\n ...((await instance.$prompt(ctx)) as any[]),\n ...(await this.hooks.emit(CommandStoreKeys.PROMPT_HOOKS, cmdName, ctx))\n ];\n\n if (questions.length) {\n ctx = {\n ...ctx,\n ...((await Inquirer.prompt(questions)) as any)\n };\n }\n }\n\n return ctx;\n }\n\n /**\n * Run lifecycle\n * @param cmdName\n * @param ctx\n */\n public async getTasks(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.token)!;\n\n ctx = this.mapContext(cmdName, ctx);\n\n if (instance.$beforeExec) {\n await instance.$beforeExec(ctx);\n }\n\n return [...(await instance.$exec(ctx)), ...(await this.hooks.emit(CommandStoreKeys.EXEC_HOOKS, cmdName, ctx))];\n }\n\n public async getPostInstallTasks(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n\n ctx = this.mapContext(cmdName, ctx);\n\n return [\n ...(instance.$postInstall ? await instance.$postInstall(ctx) : []),\n ...(await this.hooks.emit(CommandStoreKeys.POST_INSTALL_HOOKS, cmdName, ctx)),\n ...(instance.$afterPostInstall ? await instance.$afterPostInstall(ctx) : [])\n ];\n }\n\n public createCommand(metadata: CommandMetadata) {\n const {args, name, options, description, alias, allowUnknownOption} = metadata;\n\n if (this.commands.has(name)) {\n return this.commands.get(name).command;\n }\n\n let cmd = this.program.command(name);\n\n const onAction = (...commanderArgs: any[]) => {\n const [, ...rawArgs] = cmd.args;\n const data = {\n verbose: !!this.program.opts().verbose,\n ...mapCommanderArgs(args, commanderArgs),\n ...mapCommanderOptions(this.program.commands),\n rawArgs\n };\n\n return this.runLifecycle(name, data);\n };\n\n if (alias) {\n cmd = cmd.alias(alias);\n }\n\n cmd = cmd.description(description);\n cmd = this.buildArguments(cmd, args);\n\n cmd = cmd.action(onAction);\n\n if (options) {\n cmd = this.buildOption(cmd, options, !!allowUnknownOption);\n }\n\n return cmd;\n }\n\n private load() {\n this.injector.getProviders(PROVIDER_TYPE_COMMAND).forEach((provider) => this.build(provider));\n }\n\n private mapContext(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n const verbose = ctx.verbose;\n\n if (instance.$mapContext) {\n ctx = instance.$mapContext(JSON.parse(JSON.stringify(ctx)));\n ctx.verbose = verbose;\n }\n\n if (ctx.verbose) {\n this.injector.logger.level = \"debug\";\n } else {\n this.injector.logger.level = \"info\";\n }\n\n return ctx;\n }\n\n /**\n * Build command and sub-commands\n * @param provider\n */\n private build(provider: Provider<any>) {\n const metadata = getCommandMetadata(provider.useClass);\n\n if (metadata.name) {\n if (this.commands.has(metadata.name)) {\n throw Error(\n `The ${metadata.name} command is already registered. Change your command name used by the class ${classOf(provider.useClass)}`\n );\n }\n\n provider.command = this.createCommand(metadata);\n\n this.commands.set(metadata.name, provider);\n }\n }\n\n /**\n * Build sub-command options\n * @param subCommand\n * @param options\n * @param allowUnknownOptions\n */\n private buildOption(subCommand: Command, options: {[key: string]: CommandOptions}, allowUnknownOptions: boolean) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Object.entries(options).reduce((subCommand, [flags, {description, required, customParser, defaultValue, ...options}]) => {\n const fn = (v: any) => parseOption(v, options);\n\n if (options.type === Boolean) {\n defaultValue = false;\n }\n\n return required\n ? subCommand.requiredOption(flags, description, fn, defaultValue)\n : subCommand.option(flags, description, fn, defaultValue);\n }, subCommand);\n\n subCommand.option(\"-r, --root-dir <path>\", \"Project root directory\");\n subCommand.option(\"--verbose\", \"Verbose mode\", () => true);\n\n if (allowUnknownOptions) {\n subCommand.allowUnknownOption(true);\n }\n\n return subCommand;\n }\n\n private buildArguments(cmd: Command, args: Record<string, CommandArg>) {\n return Object.entries(args).reduce((cmd, [key, {description, required, defaultValue}]) => {\n const argument = new Argument(required ? `<${key}>` : `[${key}]`, description);\n\n if (defaultValue !== undefined) {\n argument.default(defaultValue);\n }\n\n return cmd.addArgument(argument);\n }, cmd);\n }\n}\n"]}
@@ -32,19 +32,16 @@ let CliCore = CliCore_1 = class CliCore {
32
32
  }
33
33
  return this;
34
34
  }
35
- static async bootstrap(settings, module = CliCore_1) {
35
+ static async create(settings, module = CliCore_1) {
36
36
  const injector = this.createInjector(settings);
37
37
  settings.plugins && (await loadPlugins(injector));
38
38
  await this.loadInjector(injector, module);
39
39
  await injector.emit("$onReady");
40
- const cli = injector.get(CliCore_1);
41
- try {
42
- await cli.cliService.parseArgs(injector.settings.get("argv"));
43
- }
44
- catch (er) {
45
- throw new CliError({ origin: er, cli });
46
- }
47
- return cli;
40
+ return injector.get(CliCore_1);
41
+ }
42
+ static async bootstrap(settings, module = CliCore_1) {
43
+ const cli = await this.create(settings, module);
44
+ return cli.bootstrap();
48
45
  }
49
46
  static async loadInjector(injector, module = CliCore_1) {
50
47
  await injector.emit("$beforeInit");
@@ -78,6 +75,15 @@ let CliCore = CliCore_1 = class CliCore {
78
75
  }
79
76
  return process.cwd();
80
77
  }
78
+ async bootstrap() {
79
+ try {
80
+ await this.cliService.parseArgs(this.injector.settings.get("argv"));
81
+ }
82
+ catch (er) {
83
+ throw new CliError({ origin: er, cli: this });
84
+ }
85
+ return this;
86
+ }
81
87
  };
82
88
  __decorate([
83
89
  Inject(),
@@ -1 +1 @@
1
- {"version":3,"file":"CliCore.js","sourceRoot":"","sources":["../../src/CliCore.ts"],"names":[],"mappings":"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","sourcesContent":["import {createContainer, Inject, InjectorService, Module} from \"@tsed/di\";\nimport {Type} from \"@tsed/core\";\nimport chalk from \"chalk\";\nimport {Command} from \"commander\";\nimport {join, resolve} from \"path\";\nimport updateNotifier from \"update-notifier\";\nimport {CliConfiguration} from \"./services/CliConfiguration\";\nimport {CliPackageJson} from \"./services/CliPackageJson\";\nimport {CliService} from \"./services/CliService\";\nimport {ProjectPackageJson} from \"./services/ProjectPackageJson\";\nimport {createInjector} from \"./utils/createInjector\";\nimport {loadPlugins} from \"./utils/loadPlugins\";\nimport {CliError} from \"./domains/CliError\";\nimport semver from \"semver\";\n\nfunction isHelpManual(argv: string[]) {\n return argv.includes(\"-h\") || argv.includes(\"--help\");\n}\n\n@Module({\n imports: [CliPackageJson, ProjectPackageJson, CliService, CliConfiguration]\n})\nexport class CliCore {\n @Inject()\n injector: InjectorService;\n\n @Inject()\n cliService: CliService;\n\n static checkNodeVersion(wanted: string, id: string) {\n if (!semver.satisfies(process.version, wanted)) {\n console.log(\n chalk.red(\n \"You are using Node \" +\n process.version +\n \", but this version of \" +\n id +\n \" requires Node \" +\n wanted +\n \".\\nPlease upgrade your Node version.\"\n )\n );\n process.exit(1);\n }\n\n return this;\n }\n\n static async bootstrap(settings: Partial<TsED.Configuration>, module: Type = CliCore): Promise<CliCore> {\n const injector = this.createInjector(settings);\n\n settings.plugins && (await loadPlugins(injector));\n\n await this.loadInjector(injector, module);\n\n await injector.emit(\"$onReady\");\n\n const cli = injector.get<CliCore>(CliCore)!;\n\n try {\n await cli.cliService.parseArgs(injector.settings.get(\"argv\")!);\n } catch (er) {\n throw new CliError({origin: er, cli});\n }\n\n return cli;\n }\n\n static async loadInjector(injector: InjectorService, module: Type = CliCore) {\n await injector.emit(\"$beforeInit\");\n\n const container = createContainer();\n\n await injector.load(container, module);\n\n await injector.emit(\"$afterInit\");\n\n injector.settings.set(\"loaded\", true);\n }\n\n static updateNotifier(pkg: any) {\n updateNotifier({pkg, updateCheckInterval: 0}).notify();\n return this;\n }\n\n protected static createInjector(settings: Partial<TsED.Configuration>) {\n const argv = settings.argv || process.argv;\n\n return createInjector({\n ...settings,\n name: settings.name || \"tsed\",\n argv,\n project: {\n rootDir: this.getProjectRoot(argv),\n srcDir: \"src\",\n scriptsDir: \"scripts\",\n ...(settings.project || {})\n }\n });\n }\n\n protected static getProjectRoot(argv: string[]) {\n if (!isHelpManual(argv)) {\n const projectRoot =\n new Command().option(\"-r, --root-dir <path>\", \"Project root directory\").allowUnknownOption(true).parse(argv).opts().rootDir || \"\";\n\n return resolve(join(process.cwd(), projectRoot));\n }\n\n return process.cwd();\n }\n}\n"]}
1
+ {"version":3,"file":"CliCore.js","sourceRoot":"","sources":["../../src/CliCore.ts"],"names":[],"mappings":"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","sourcesContent":["import {createContainer, Inject, InjectorService, Module} from \"@tsed/di\";\nimport {Type} from \"@tsed/core\";\nimport chalk from \"chalk\";\nimport {Command} from \"commander\";\nimport {join, resolve} from \"path\";\nimport updateNotifier from \"update-notifier\";\nimport {CliConfiguration} from \"./services/CliConfiguration\";\nimport {CliPackageJson} from \"./services/CliPackageJson\";\nimport {CliService} from \"./services/CliService\";\nimport {ProjectPackageJson} from \"./services/ProjectPackageJson\";\nimport {createInjector} from \"./utils/createInjector\";\nimport {loadPlugins} from \"./utils/loadPlugins\";\nimport {CliError} from \"./domains/CliError\";\nimport semver from \"semver\";\n\nfunction isHelpManual(argv: string[]) {\n return argv.includes(\"-h\") || argv.includes(\"--help\");\n}\n\n@Module({\n imports: [CliPackageJson, ProjectPackageJson, CliService, CliConfiguration]\n})\nexport class CliCore {\n @Inject()\n readonly injector: InjectorService;\n\n @Inject()\n readonly cliService: CliService;\n\n static checkNodeVersion(wanted: string, id: string) {\n if (!semver.satisfies(process.version, wanted)) {\n console.log(\n chalk.red(\n \"You are using Node \" +\n process.version +\n \", but this version of \" +\n id +\n \" requires Node \" +\n wanted +\n \".\\nPlease upgrade your Node version.\"\n )\n );\n process.exit(1);\n }\n\n return this;\n }\n\n static async create<Cli extends CliCore = CliCore>(settings: Partial<TsED.Configuration>, module: Type = CliCore): Promise<Cli> {\n const injector = this.createInjector(settings);\n\n settings.plugins && (await loadPlugins(injector));\n\n await this.loadInjector(injector, module);\n\n await injector.emit(\"$onReady\");\n\n return injector.get<Cli>(CliCore)!;\n }\n\n static async bootstrap(settings: Partial<TsED.Configuration>, module: Type = CliCore) {\n const cli = await this.create(settings, module);\n\n return cli.bootstrap();\n }\n\n static async loadInjector(injector: InjectorService, module: Type = CliCore) {\n await injector.emit(\"$beforeInit\");\n\n const container = createContainer();\n\n await injector.load(container, module);\n\n await injector.emit(\"$afterInit\");\n\n injector.settings.set(\"loaded\", true);\n }\n\n static updateNotifier(pkg: any) {\n updateNotifier({pkg, updateCheckInterval: 0}).notify();\n return this;\n }\n\n protected static createInjector(settings: Partial<TsED.Configuration>) {\n const argv = settings.argv || process.argv;\n\n return createInjector({\n ...settings,\n name: settings.name || \"tsed\",\n argv,\n project: {\n rootDir: this.getProjectRoot(argv),\n srcDir: \"src\",\n scriptsDir: \"scripts\",\n ...(settings.project || {})\n }\n });\n }\n\n protected static getProjectRoot(argv: string[]) {\n if (!isHelpManual(argv)) {\n const projectRoot =\n new Command().option(\"-r, --root-dir <path>\", \"Project root directory\").allowUnknownOption(true).parse(argv).opts().rootDir || \"\";\n\n return resolve(join(process.cwd(), projectRoot));\n }\n\n return process.cwd();\n }\n\n async bootstrap() {\n try {\n await this.cliService.parseArgs(this.injector.settings.get(\"argv\")!);\n } catch (er) {\n throw new CliError({origin: er, cli: this});\n }\n\n return this;\n }\n}\n"]}
@@ -42,6 +42,9 @@ let CliService = class CliService {
42
42
  async runLifecycle(cmdName, data = {}) {
43
43
  data = await this.beforePrompt(cmdName, data);
44
44
  data = await this.prompt(cmdName, data);
45
+ await this.dispatch(cmdName, data);
46
+ }
47
+ async dispatch(cmdName, data) {
45
48
  try {
46
49
  await this.exec(cmdName, data);
47
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CliService.js","sourceRoot":"","sources":["../../../src/services/CliService.ts"],"names":[],"mappings":"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","sourcesContent":["import {classOf} from \"@tsed/core\";\nimport {Constant, Inject, Injectable, InjectorService, Provider} from \"@tsed/di\";\nimport {Argument, Command} from \"commander\";\nimport Inquirer from \"inquirer\";\nimport {CommandStoreKeys} from \"../domains/CommandStoreKeys\";\nimport {CommandProvider} from \"../interfaces/CommandProvider\";\nimport {CommandMetadata} from \"../interfaces/CommandMetadata\";\nimport {CommandArg, CommandOptions} from \"../interfaces/CommandParameters\";\nimport {PROVIDER_TYPE_COMMAND} from \"../registries/CommandRegistry\";\nimport {createSubTasks, createTasksRunner} from \"../utils/createTasksRunner\";\nimport {getCommandMetadata} from \"../utils/getCommandMetadata\";\nimport {mapCommanderArgs} from \"../utils/mapCommanderArgs\";\nimport {mapCommanderOptions} from \"../utils/mapCommanderOptions\";\nimport {parseOption} from \"../utils/parseOption\";\nimport {CliHooks} from \"./CliHooks\";\nimport {ProjectPackageJson} from \"./ProjectPackageJson\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport inquirer_autocomplete_prompt from \"inquirer-autocomplete-prompt\";\n\nInquirer.registerPrompt(\"autocomplete\", inquirer_autocomplete_prompt);\n\n@Injectable()\nexport class CliService {\n readonly program = new Command();\n\n @Constant(\"project.reinstallAfterRun\", false)\n reinstallAfterRun = false;\n\n @Constant(\"pkg\", {version: \"1.0.0\"})\n protected pkg: any;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected hooks: CliHooks;\n\n @Inject()\n protected projectPkg: ProjectPackageJson;\n\n private commands = new Map();\n\n /**\n * Parse process.argv and runLifecycle action\n * @param argv\n */\n async parseArgs(argv: string[]): Promise<void> {\n const {program} = this;\n\n program.version(this.pkg.version);\n\n this.load();\n\n await program.parseAsync(argv);\n }\n\n /**\n * Run lifecycle\n * @param cmdName\n * @param data\n */\n public async runLifecycle(cmdName: string, data: any = {}) {\n data = await this.beforePrompt(cmdName, data);\n data = await this.prompt(cmdName, data);\n\n try {\n await this.exec(cmdName, data);\n } catch (er) {\n await this.injector.emit(\"$onFinish\", er);\n await this.injector.destroy();\n throw er;\n }\n\n await this.injector.emit(\"$onFinish\");\n await this.injector.destroy();\n }\n\n public async exec(cmdName: string, ctx: any) {\n const initialTasks = await this.getTasks(cmdName, ctx);\n\n if (initialTasks.length) {\n const tasks = [\n ...initialTasks,\n {\n title: \"Install dependencies\",\n enabled: () => this.reinstallAfterRun && (this.projectPkg.rewrite || this.projectPkg.reinstall),\n task: createSubTasks(() => this.projectPkg.install(ctx), {...ctx, concurrent: false})\n },\n ...(await this.getPostInstallTasks(cmdName, ctx))\n ];\n\n return createTasksRunner(tasks, this.mapContext(cmdName, ctx));\n }\n }\n\n /**\n * Run prompt for a given command\n * @param cmdName\n * @param ctx Initial data\n */\n public async beforePrompt(cmdName: string, ctx: any = {}) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n const verbose = ctx.verbose;\n\n if (instance.$beforePrompt) {\n ctx = await instance.$beforePrompt(JSON.parse(JSON.stringify(ctx)));\n ctx.verbose = verbose;\n }\n return ctx;\n }\n\n /**\n * Run prompt for a given command\n * @param cmdName\n * @param ctx Initial data\n */\n public async prompt(cmdName: string, ctx: any = {}) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n\n if (instance.$prompt) {\n const questions = [\n ...((await instance.$prompt(ctx)) as any[]),\n ...(await this.hooks.emit(CommandStoreKeys.PROMPT_HOOKS, cmdName, ctx))\n ];\n\n if (questions.length) {\n ctx = {\n ...ctx,\n ...((await Inquirer.prompt(questions)) as any)\n };\n }\n }\n\n return ctx;\n }\n\n /**\n * Run lifecycle\n * @param cmdName\n * @param ctx\n */\n public async getTasks(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.token)!;\n\n ctx = this.mapContext(cmdName, ctx);\n\n if (instance.$beforeExec) {\n await instance.$beforeExec(ctx);\n }\n\n return [...(await instance.$exec(ctx)), ...(await this.hooks.emit(CommandStoreKeys.EXEC_HOOKS, cmdName, ctx))];\n }\n\n public async getPostInstallTasks(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n\n ctx = this.mapContext(cmdName, ctx);\n\n return [\n ...(instance.$postInstall ? await instance.$postInstall(ctx) : []),\n ...(await this.hooks.emit(CommandStoreKeys.POST_INSTALL_HOOKS, cmdName, ctx)),\n ...(instance.$afterPostInstall ? await instance.$afterPostInstall(ctx) : [])\n ];\n }\n\n public createCommand(metadata: CommandMetadata) {\n const {args, name, options, description, alias, allowUnknownOption} = metadata;\n\n if (this.commands.has(name)) {\n return this.commands.get(name).command;\n }\n\n let cmd = this.program.command(name);\n\n const onAction = (...commanderArgs: any[]) => {\n const [, ...rawArgs] = cmd.args;\n const data = {\n verbose: !!this.program.opts().verbose,\n ...mapCommanderArgs(args, commanderArgs),\n ...mapCommanderOptions(this.program.commands),\n rawArgs\n };\n\n return this.runLifecycle(name, data);\n };\n\n if (alias) {\n cmd = cmd.alias(alias);\n }\n\n cmd = cmd.description(description);\n cmd = this.buildArguments(cmd, args);\n\n cmd = cmd.action(onAction);\n\n if (options) {\n cmd = this.buildOption(cmd, options, !!allowUnknownOption);\n }\n\n return cmd;\n }\n\n private load() {\n this.injector.getProviders(PROVIDER_TYPE_COMMAND).forEach((provider) => this.build(provider));\n }\n\n private mapContext(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n const verbose = ctx.verbose;\n\n if (instance.$mapContext) {\n ctx = instance.$mapContext(JSON.parse(JSON.stringify(ctx)));\n ctx.verbose = verbose;\n }\n\n if (ctx.verbose) {\n this.injector.logger.level = \"debug\";\n } else {\n this.injector.logger.level = \"info\";\n }\n\n return ctx;\n }\n\n /**\n * Build command and sub-commands\n * @param provider\n */\n private build(provider: Provider<any>) {\n const metadata = getCommandMetadata(provider.useClass);\n\n if (metadata.name) {\n if (this.commands.has(metadata.name)) {\n throw Error(\n `The ${metadata.name} command is already registered. Change your command name used by the class ${classOf(provider.useClass)}`\n );\n }\n\n provider.command = this.createCommand(metadata);\n\n this.commands.set(metadata.name, provider);\n }\n }\n\n /**\n * Build sub-command options\n * @param subCommand\n * @param options\n * @param allowUnknownOptions\n */\n private buildOption(subCommand: Command, options: {[key: string]: CommandOptions}, allowUnknownOptions: boolean) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Object.entries(options).reduce((subCommand, [flags, {description, required, customParser, defaultValue, ...options}]) => {\n const fn = (v: any) => parseOption(v, options);\n\n if (options.type === Boolean) {\n defaultValue = false;\n }\n\n return required\n ? subCommand.requiredOption(flags, description, fn, defaultValue)\n : subCommand.option(flags, description, fn, defaultValue);\n }, subCommand);\n\n subCommand.option(\"-r, --root-dir <path>\", \"Project root directory\");\n subCommand.option(\"--verbose\", \"Verbose mode\", () => true);\n\n if (allowUnknownOptions) {\n subCommand.allowUnknownOption(true);\n }\n\n return subCommand;\n }\n\n private buildArguments(cmd: Command, args: Record<string, CommandArg>) {\n return Object.entries(args).reduce((cmd, [key, {description, required, defaultValue}]) => {\n const argument = new Argument(required ? `<${key}>` : `[${key}]`, description);\n\n if (defaultValue !== undefined) {\n argument.default(defaultValue);\n }\n\n return cmd.addArgument(argument);\n }, cmd);\n }\n}\n"]}
1
+ {"version":3,"file":"CliService.js","sourceRoot":"","sources":["../../../src/services/CliService.ts"],"names":[],"mappings":"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","sourcesContent":["import {classOf} from \"@tsed/core\";\nimport {Constant, Inject, Injectable, InjectorService, Provider} from \"@tsed/di\";\nimport {Argument, Command} from \"commander\";\nimport Inquirer from \"inquirer\";\nimport {CommandStoreKeys} from \"../domains/CommandStoreKeys\";\nimport {CommandProvider} from \"../interfaces/CommandProvider\";\nimport {CommandMetadata} from \"../interfaces/CommandMetadata\";\nimport {CommandArg, CommandOptions} from \"../interfaces/CommandParameters\";\nimport {PROVIDER_TYPE_COMMAND} from \"../registries/CommandRegistry\";\nimport {createSubTasks, createTasksRunner} from \"../utils/createTasksRunner\";\nimport {getCommandMetadata} from \"../utils/getCommandMetadata\";\nimport {mapCommanderArgs} from \"../utils/mapCommanderArgs\";\nimport {mapCommanderOptions} from \"../utils/mapCommanderOptions\";\nimport {parseOption} from \"../utils/parseOption\";\nimport {CliHooks} from \"./CliHooks\";\nimport {ProjectPackageJson} from \"./ProjectPackageJson\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport inquirer_autocomplete_prompt from \"inquirer-autocomplete-prompt\";\n\nInquirer.registerPrompt(\"autocomplete\", inquirer_autocomplete_prompt);\n\n@Injectable()\nexport class CliService {\n readonly program = new Command();\n\n @Constant(\"project.reinstallAfterRun\", false)\n reinstallAfterRun = false;\n\n @Constant(\"pkg\", {version: \"1.0.0\"})\n protected pkg: any;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected hooks: CliHooks;\n\n @Inject()\n protected projectPkg: ProjectPackageJson;\n\n private commands = new Map();\n\n /**\n * Parse process.argv and runLifecycle action\n * @param argv\n */\n async parseArgs(argv: string[]): Promise<void> {\n const {program} = this;\n\n program.version(this.pkg.version);\n\n this.load();\n\n await program.parseAsync(argv);\n }\n\n /**\n * Run lifecycle\n * @param cmdName\n * @param data\n */\n public async runLifecycle(cmdName: string, data: any = {}) {\n data = await this.beforePrompt(cmdName, data);\n data = await this.prompt(cmdName, data);\n\n await this.dispatch(cmdName, data);\n }\n\n public async dispatch(cmdName: string, data: any) {\n try {\n await this.exec(cmdName, data);\n } catch (er) {\n await this.injector.emit(\"$onFinish\", er);\n await this.injector.destroy();\n throw er;\n }\n\n await this.injector.emit(\"$onFinish\");\n await this.injector.destroy();\n }\n\n public async exec(cmdName: string, ctx: any) {\n const initialTasks = await this.getTasks(cmdName, ctx);\n\n if (initialTasks.length) {\n const tasks = [\n ...initialTasks,\n {\n title: \"Install dependencies\",\n enabled: () => this.reinstallAfterRun && (this.projectPkg.rewrite || this.projectPkg.reinstall),\n task: createSubTasks(() => this.projectPkg.install(ctx), {...ctx, concurrent: false})\n },\n ...(await this.getPostInstallTasks(cmdName, ctx))\n ];\n\n return createTasksRunner(tasks, this.mapContext(cmdName, ctx));\n }\n }\n\n /**\n * Run prompt for a given command\n * @param cmdName\n * @param ctx Initial data\n */\n public async beforePrompt(cmdName: string, ctx: any = {}) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n const verbose = ctx.verbose;\n\n if (instance.$beforePrompt) {\n ctx = await instance.$beforePrompt(JSON.parse(JSON.stringify(ctx)));\n ctx.verbose = verbose;\n }\n return ctx;\n }\n\n /**\n * Run prompt for a given command\n * @param cmdName\n * @param ctx Initial data\n */\n public async prompt(cmdName: string, ctx: any = {}) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n\n if (instance.$prompt) {\n const questions = [\n ...((await instance.$prompt(ctx)) as any[]),\n ...(await this.hooks.emit(CommandStoreKeys.PROMPT_HOOKS, cmdName, ctx))\n ];\n\n if (questions.length) {\n ctx = {\n ...ctx,\n ...((await Inquirer.prompt(questions)) as any)\n };\n }\n }\n\n return ctx;\n }\n\n /**\n * Run lifecycle\n * @param cmdName\n * @param ctx\n */\n public async getTasks(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.token)!;\n\n ctx = this.mapContext(cmdName, ctx);\n\n if (instance.$beforeExec) {\n await instance.$beforeExec(ctx);\n }\n\n return [...(await instance.$exec(ctx)), ...(await this.hooks.emit(CommandStoreKeys.EXEC_HOOKS, cmdName, ctx))];\n }\n\n public async getPostInstallTasks(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n\n ctx = this.mapContext(cmdName, ctx);\n\n return [\n ...(instance.$postInstall ? await instance.$postInstall(ctx) : []),\n ...(await this.hooks.emit(CommandStoreKeys.POST_INSTALL_HOOKS, cmdName, ctx)),\n ...(instance.$afterPostInstall ? await instance.$afterPostInstall(ctx) : [])\n ];\n }\n\n public createCommand(metadata: CommandMetadata) {\n const {args, name, options, description, alias, allowUnknownOption} = metadata;\n\n if (this.commands.has(name)) {\n return this.commands.get(name).command;\n }\n\n let cmd = this.program.command(name);\n\n const onAction = (...commanderArgs: any[]) => {\n const [, ...rawArgs] = cmd.args;\n const data = {\n verbose: !!this.program.opts().verbose,\n ...mapCommanderArgs(args, commanderArgs),\n ...mapCommanderOptions(this.program.commands),\n rawArgs\n };\n\n return this.runLifecycle(name, data);\n };\n\n if (alias) {\n cmd = cmd.alias(alias);\n }\n\n cmd = cmd.description(description);\n cmd = this.buildArguments(cmd, args);\n\n cmd = cmd.action(onAction);\n\n if (options) {\n cmd = this.buildOption(cmd, options, !!allowUnknownOption);\n }\n\n return cmd;\n }\n\n private load() {\n this.injector.getProviders(PROVIDER_TYPE_COMMAND).forEach((provider) => this.build(provider));\n }\n\n private mapContext(cmdName: string, ctx: any) {\n const provider = this.commands.get(cmdName);\n const instance = this.injector.get<CommandProvider>(provider.useClass)!;\n const verbose = ctx.verbose;\n\n if (instance.$mapContext) {\n ctx = instance.$mapContext(JSON.parse(JSON.stringify(ctx)));\n ctx.verbose = verbose;\n }\n\n if (ctx.verbose) {\n this.injector.logger.level = \"debug\";\n } else {\n this.injector.logger.level = \"info\";\n }\n\n return ctx;\n }\n\n /**\n * Build command and sub-commands\n * @param provider\n */\n private build(provider: Provider<any>) {\n const metadata = getCommandMetadata(provider.useClass);\n\n if (metadata.name) {\n if (this.commands.has(metadata.name)) {\n throw Error(\n `The ${metadata.name} command is already registered. Change your command name used by the class ${classOf(provider.useClass)}`\n );\n }\n\n provider.command = this.createCommand(metadata);\n\n this.commands.set(metadata.name, provider);\n }\n }\n\n /**\n * Build sub-command options\n * @param subCommand\n * @param options\n * @param allowUnknownOptions\n */\n private buildOption(subCommand: Command, options: {[key: string]: CommandOptions}, allowUnknownOptions: boolean) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Object.entries(options).reduce((subCommand, [flags, {description, required, customParser, defaultValue, ...options}]) => {\n const fn = (v: any) => parseOption(v, options);\n\n if (options.type === Boolean) {\n defaultValue = false;\n }\n\n return required\n ? subCommand.requiredOption(flags, description, fn, defaultValue)\n : subCommand.option(flags, description, fn, defaultValue);\n }, subCommand);\n\n subCommand.option(\"-r, --root-dir <path>\", \"Project root directory\");\n subCommand.option(\"--verbose\", \"Verbose mode\", () => true);\n\n if (allowUnknownOptions) {\n subCommand.allowUnknownOption(true);\n }\n\n return subCommand;\n }\n\n private buildArguments(cmd: Command, args: Record<string, CommandArg>) {\n return Object.entries(args).reduce((cmd, [key, {description, required, defaultValue}]) => {\n const argument = new Argument(required ? `<${key}>` : `[${key}]`, description);\n\n if (defaultValue !== undefined) {\n argument.default(defaultValue);\n }\n\n return cmd.addArgument(argument);\n }, cmd);\n }\n}\n"]}
@@ -2,12 +2,14 @@ import { InjectorService } from "@tsed/di";
2
2
  import { Type } from "@tsed/core";
3
3
  import { CliService } from "./services/CliService";
4
4
  export declare class CliCore {
5
- injector: InjectorService;
6
- cliService: CliService;
5
+ readonly injector: InjectorService;
6
+ readonly cliService: CliService;
7
7
  static checkNodeVersion(wanted: string, id: string): typeof CliCore;
8
+ static create<Cli extends CliCore = CliCore>(settings: Partial<TsED.Configuration>, module?: Type): Promise<Cli>;
8
9
  static bootstrap(settings: Partial<TsED.Configuration>, module?: Type): Promise<CliCore>;
9
10
  static loadInjector(injector: InjectorService, module?: Type): Promise<void>;
10
11
  static updateNotifier(pkg: any): typeof CliCore;
11
12
  protected static createInjector(settings: Partial<TsED.Configuration>): InjectorService;
12
13
  protected static getProjectRoot(argv: string[]): string;
14
+ bootstrap(): Promise<this>;
13
15
  }
@@ -22,6 +22,7 @@ export declare class CliService {
22
22
  * @param data
23
23
  */
24
24
  runLifecycle(cmdName: string, data?: any): Promise<void>;
25
+ dispatch(cmdName: string, data: any): Promise<void>;
25
26
  exec(cmdName: string, ctx: any): Promise<any>;
26
27
  /**
27
28
  * Run prompt for a given command
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/cli-core",
3
- "version": "3.23.0",
3
+ "version": "3.25.0",
4
4
  "description": "Build your CLI with TypeScript and Decorators",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/cjs/index.js",
@@ -38,7 +38,7 @@
38
38
  "create-frame": "1.0.0",
39
39
  "enquirer": "2.3.6",
40
40
  "execa": "5.1.1",
41
- "figures": "4.0.0",
41
+ "figures": "4.0.1",
42
42
  "filedirname": "2.7.0",
43
43
  "fs-extra": "10.1.0",
44
44
  "globby": "11.1.0",