Skip to content

Commit a5cfbb3

Browse files
committed
feat: Enhance agent creation command with detailed JSDoc comments for improved documentation
1 parent 2c50fa6 commit a5cfbb3

File tree

1 file changed

+103
-20
lines changed

1 file changed

+103
-20
lines changed
Lines changed: 103 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,151 @@
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'
66

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+
*/
716
@QuestionSet({ name: 'agent-create-questions' })
817
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+
*/
924
@Question({
1025
message: 'Username ?',
1126
name: 'username',
1227
})
1328
parseUsername(val: string) {
14-
return val;
29+
return val
1530
}
1631

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+
*/
1738
@Question({
1839
message: 'Email ?',
1940
name: 'email',
2041
})
2142
parseEmail(val: string) {
22-
return val;
43+
return val
2344
}
2445

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+
*/
2553
@Question({
2654
message: 'Password ?',
2755
name: 'password',
2856
type: 'password',
2957
})
3058
parsePassword(val: string) {
31-
return val;
59+
return val
3260
}
3361
}
3462

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+
*/
3578
@SubCommand({ name: 'create' })
3679
export class AgentsCreateCommand extends CommandRunner {
37-
private readonly logger = new Logger(AgentsCreateCommand.name);
80+
private readonly logger = new Logger(AgentsCreateCommand.name)
3881

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+
*/
3989
public constructor(
4090
protected moduleRef: ModuleRef,
4191
private readonly inquirer: InquirerService,
4292
private readonly agentsService: AgentsService,
4393
) {
44-
super();
94+
super()
4595
}
4696

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)
51109
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')
54113
} catch (error) {
55-
console.error('Error creating agent', error);
114+
console.error('Error creating agent', error)
56115
}
57116
}
58117
}
59118

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+
*/
60132
@Command({ name: 'agents', arguments: '<task>', subCommands: [AgentsCreateCommand] })
61133
export class AgentsCommand extends CommandRunner {
134+
/**
135+
* Constructeur de la commande agents
136+
*
137+
* @param moduleRef Référence au module NestJS
138+
*/
62139
public constructor(protected moduleRef: ModuleRef) {
63-
super();
140+
super()
64141
}
65142

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> { }
68151
}

0 commit comments

Comments
 (0)