myt/lib/command.js

38 lines
906 B
JavaScript
Raw Permalink Normal View History

/**
2022-12-21 13:17:50 +00:00
* Base class for Myt commands.
*/
2024-01-05 09:28:05 +00:00
module.exports = class MytCommand{
constructor(myt, opts) {
this.myt = myt;
this.opts = opts;
2024-01-05 09:28:05 +00:00
this.handlers = {};
}
async cli(myt, opts) {
const reporter = this.constructor.reporter;
if (reporter)
for (const event in reporter) {
const handler = reporter[event];
if (typeof handler == 'string') {
this.on(event, () => console.log(handler));
} else if (handler instanceof Function)
this.on(event, handler);
}
await this.run(myt, opts);
}
async run(myt, opts) {
throw new Error('run command not defined');
}
2024-01-05 09:28:05 +00:00
on(event, handler) {
this.handlers[event] = handler;
}
emit(event, ...args) {
const handler = this.handlers[event];
if (handler) handler (...args);
}
}