@adonisjs/ace
Version:
A CLI framework for Node.js
46 lines (45 loc) • 1.4 kB
TypeScript
import type { AbstractBaseCommand, CommandMetaData, LoadersContract } from '../types.ts';
/**
* List loader exposes the API to register commands as classes
*
* @example
* ```ts
* const loader = new ListLoader([MyCommand, AnotherCommand])
* const metadata = await loader.getMetaData()
* const command = await loader.getCommand(metadata[0])
* ```
*/
export declare class ListLoader<Command extends AbstractBaseCommand> implements LoadersContract<Command> {
#private;
/**
* Create a new list loader
*
* @param commands - Array of command classes to register
*/
constructor(commands: Command[]);
/**
* Returns an array of command metadata for all registered commands
*
* @example
* ```ts
* const metadata = await loader.getMetaData()
* metadata.forEach(cmd => console.log(cmd.commandName))
* ```
*/
getMetaData(): Promise<CommandMetaData[]>;
/**
* Returns the command class constructor for a given command. Null
* is returned when unable to lookup the command
*
* @param metaData - The command metadata to find
*
* @example
* ```ts
* const command = await loader.getCommand(metadata)
* if (command) {
* const instance = new command(kernel, parsed, ui, prompt)
* }
* ```
*/
getCommand(metaData: CommandMetaData): Promise<Command | null>;
}