|
1 | | -import { Logger } from '@nestjs/common'; |
2 | | -import { ModuleRef } from '@nestjs/core'; |
3 | | -import { Command, CommandRunner, InquirerService, Question, QuestionSet, SubCommand } from 'nest-commander'; |
4 | | -import { AgentsCreateDto } from '~/core/agents/_dto/agents.dto'; |
5 | | -import { AgentsService } from '~/core/agents/agents.service'; |
| 1 | +import { Logger } from '@nestjs/common' |
| 2 | +import { ModuleRef } from '@nestjs/core' |
| 3 | +import { Command, CommandRunner, InquirerService, Question, QuestionSet, SubCommand } from 'nest-commander' |
| 4 | +import { AgentsCreateDto } from '~/core/agents/_dto/agents.dto' |
| 5 | +import { AgentsService } from '~/core/agents/agents.service' |
6 | 6 |
|
| 7 | +/** |
| 8 | + * Ensemble de questions interactives pour la création d'un agent. |
| 9 | + * |
| 10 | + * Cette classe définit les questions qui seront posées à l'utilisateur |
| 11 | + * lors de la création d'un nouvel agent via la ligne de commande. |
| 12 | + * Les questions collectent le nom d'utilisateur, l'email et le mot de passe. |
| 13 | + * |
| 14 | + * @class AgentCreateQuestions |
| 15 | + */ |
7 | 16 | @QuestionSet({ name: 'agent-create-questions' }) |
8 | 17 | export class AgentCreateQuestions { |
| 18 | + /** |
| 19 | + * Question pour le nom d'utilisateur de l'agent |
| 20 | + * |
| 21 | + * @param val Valeur saisie par l'utilisateur |
| 22 | + * @returns Le nom d'utilisateur de l'agent |
| 23 | + */ |
9 | 24 | @Question({ |
10 | 25 | message: 'Username ?', |
11 | 26 | name: 'username', |
12 | 27 | }) |
13 | 28 | parseUsername(val: string) { |
14 | | - return val; |
| 29 | + return val |
15 | 30 | } |
16 | 31 |
|
| 32 | + /** |
| 33 | + * Question pour l'adresse email de l'agent |
| 34 | + * |
| 35 | + * @param val Valeur saisie par l'utilisateur |
| 36 | + * @returns L'adresse email de l'agent |
| 37 | + */ |
17 | 38 | @Question({ |
18 | 39 | message: 'Email ?', |
19 | 40 | name: 'email', |
20 | 41 | }) |
21 | 42 | parseEmail(val: string) { |
22 | | - return val; |
| 43 | + return val |
23 | 44 | } |
24 | 45 |
|
| 46 | + /** |
| 47 | + * Question pour le mot de passe de l'agent |
| 48 | + * Le mot de passe est masqué lors de la saisie |
| 49 | + * |
| 50 | + * @param val Valeur saisie par l'utilisateur |
| 51 | + * @returns Le mot de passe de l'agent |
| 52 | + */ |
25 | 53 | @Question({ |
26 | 54 | message: 'Password ?', |
27 | 55 | name: 'password', |
28 | 56 | type: 'password', |
29 | 57 | }) |
30 | 58 | parsePassword(val: string) { |
31 | | - return val; |
| 59 | + return val |
32 | 60 | } |
33 | 61 | } |
34 | 62 |
|
| 63 | +/** |
| 64 | + * Sous-commande pour créer un nouvel agent. |
| 65 | + * |
| 66 | + * Cette commande permet de créer un agent en mode interactif en posant |
| 67 | + * une série de questions à l'utilisateur (username, email, password). |
| 68 | + * Les données collectées sont ensuite utilisées pour créer l'agent via |
| 69 | + * le service AgentsService. |
| 70 | + * |
| 71 | + * @class AgentsCreateCommand |
| 72 | + * @extends {CommandRunner} |
| 73 | + * @example |
| 74 | + * ```bash |
| 75 | + * yarn run console agents create |
| 76 | + * ``` |
| 77 | + */ |
35 | 78 | @SubCommand({ name: 'create' }) |
36 | 79 | export class AgentsCreateCommand extends CommandRunner { |
37 | | - private readonly logger = new Logger(AgentsCreateCommand.name); |
| 80 | + private readonly logger = new Logger(AgentsCreateCommand.name) |
38 | 81 |
|
| 82 | + /** |
| 83 | + * Constructeur de la commande de création d'agent |
| 84 | + * |
| 85 | + * @param moduleRef Référence au module NestJS |
| 86 | + * @param inquirer Service pour poser des questions interactives à l'utilisateur |
| 87 | + * @param agentsService Service de gestion des agents |
| 88 | + */ |
39 | 89 | public constructor( |
40 | 90 | protected moduleRef: ModuleRef, |
41 | 91 | private readonly inquirer: InquirerService, |
42 | 92 | private readonly agentsService: AgentsService, |
43 | 93 | ) { |
44 | | - super(); |
| 94 | + super() |
45 | 95 | } |
46 | 96 |
|
47 | | - // eslint-disable-next-line @typescript-eslint/no-unused-vars |
48 | | - async run(inputs: string[], options: any): Promise<void> { |
49 | | - this.logger.log('Starting agent creation process...'); |
50 | | - const agent = await this.inquirer.ask<AgentsCreateDto>('agent-create-questions', undefined); |
| 97 | + /** |
| 98 | + * Exécute la commande de création d'agent |
| 99 | + * Demande les informations nécessaires à l'utilisateur via des questions interactives |
| 100 | + * puis crée l'agent avec les données fournies |
| 101 | + * |
| 102 | + * @param _inputs Arguments passés à la commande |
| 103 | + * @param _options Options passées à la commande |
| 104 | + */ |
| 105 | + async run(_inputs: string[], _options: any): Promise<void> { |
| 106 | + this.logger.log('Starting agent creation process...') |
| 107 | + // Pose les questions définies dans AgentCreateQuestions pour obtenir les données de l'agent |
| 108 | + const agent = await this.inquirer.ask<AgentsCreateDto>('agent-create-questions', undefined) |
51 | 109 | try { |
52 | | - await this.agentsService.create(agent); |
53 | | - console.log('Agent created successfully'); |
| 110 | + // Crée l'agent avec les données collectées |
| 111 | + await this.agentsService.create(agent) |
| 112 | + console.log('Agent created successfully') |
54 | 113 | } catch (error) { |
55 | | - console.error('Error creating agent', error); |
| 114 | + console.error('Error creating agent', error) |
56 | 115 | } |
57 | 116 | } |
58 | 117 | } |
59 | 118 |
|
| 119 | +/** |
| 120 | + * Commande principale pour la gestion des agents. |
| 121 | + * |
| 122 | + * Cette commande sert de point d'entrée pour toutes les opérations |
| 123 | + * liées aux agents. Elle délègue l'exécution aux sous-commandes appropriées. |
| 124 | + * |
| 125 | + * @class AgentsCommand |
| 126 | + * @extends {CommandRunner} |
| 127 | + * @example |
| 128 | + * ```bash |
| 129 | + * yarn run console agents create |
| 130 | + * ``` |
| 131 | + */ |
60 | 132 | @Command({ name: 'agents', arguments: '<task>', subCommands: [AgentsCreateCommand] }) |
61 | 133 | export class AgentsCommand extends CommandRunner { |
| 134 | + /** |
| 135 | + * Constructeur de la commande agents |
| 136 | + * |
| 137 | + * @param moduleRef Référence au module NestJS |
| 138 | + */ |
62 | 139 | public constructor(protected moduleRef: ModuleRef) { |
63 | | - super(); |
| 140 | + super() |
64 | 141 | } |
65 | 142 |
|
66 | | - // eslint-disable-next-line @typescript-eslint/no-unused-vars |
67 | | - async run(inputs: string[], options: any): Promise<void> { } |
| 143 | + /** |
| 144 | + * Point d'entrée de la commande principale |
| 145 | + * Délègue l'exécution aux sous-commandes |
| 146 | + * |
| 147 | + * @param _inputs Arguments passés à la commande |
| 148 | + * @param _options Options passées à la commande |
| 149 | + */ |
| 150 | + async run(_inputs: string[], _options: any): Promise<void> { } |
68 | 151 | } |
0 commit comments