Sub-Zero (Sub Comandos)
Hemos tocado los conceptos básicos de la creación de un comando, pero ¿qué pasa si queremos crear un comando que tenga subcomandos? Por ejemplo, queremos crear un comando que tenga un subcomando create
y otro delete
. Aquí es donde entran en juego los subcomandos.
Creando un Subcomando
Para crear un subcomando, necesitamos crear una nueva clase que extienda de SubCommand
e implementar el método run
. Luego, necesitamos agregar el subcomando al comando principal.
Supongamos que tienes la siguiente estructura de directorios:
- src
Directorycommands
Directoryaccount
- create.command.ts
- delete.command.ts
- parent.ts
- index.ts
- seyfert.config.mjs
- package.json
- tsconfig.json
import { Declare, Command, Options } from "seyfert";import { CreateCommand } from "./create.command";import { DeleteCommand } from "./delete.command";
@Declare({ name: "account", description: "account command"})// Si están en la misma carpeta, puedes usar @AutoLoad y ahorrarte esto.@Options([CreateCommand, DeleteCommand])export default class AccountCommand extends Command {}
import { type CommandContext, Declare, SubCommand } from "seyfert";
@Declare({ name: "create", description: "create a new something"})export class CreateCommand extends SubCommand { run(ctx: CommandContext) { // some logic there
return ctx.write({ content: "create command executed" }); }}
import { type CommandContext, Declare, SubCommand } from "seyfert";
@Declare({ name: "delete", description: "delete something"})export class DeleteCommand extends SubCommand { run(ctx: CommandContext) { // some logic here
return ctx.write({ content: "delete command executed" }); }}
En el ejemplo anterior, hemos creado un subcomando create
y otro delete
. Luego agregamos los subcomandos al comando principal utilizando el decorador @Options
.