@zero-scripts/core
Version:
Framework for creating presets, configurations and extensions
41 lines • 1.42 kB
JavaScript
;
// type ExtractValue<T extends Rule<string>[]> = {
// [K in keyof T]: T[K] extends Rule<infer V> ? V : never
// };
Object.defineProperty(exports, "__esModule", { value: true });
exports.Task = void 0;
class Task {
// public readonly argumentsRules: Rule<string>[] = [];
// public readonly optionsRules: Record<string, Rule<string | boolean>> = {};
constructor(name) {
this.name = name;
}
// public expectOption<TKey extends string, TValue extends string | boolean>(
// key: TKey,
// validationRule: Rule<TValue>,
// description?: string
// ): Task<TOptions & { [K in TKey]: TValue }, _TArgs> {
// this.optionsRules[key] = validationRule as Rule<string | boolean>;
// return this as any;
// }
// public expectArguments<T extends Rule<string>[]>(
// ...validationRules: T
// ): Task<TOptions, ExtractValue<T>> {
// validationRules.forEach(rule =>
// this.argumentsRules.push(rule as Rule<string>)
// );
// return this as any;
// }
handle(handler) {
this._handler = handler;
return this;
}
run(args, options) {
if (!this._handler) {
throw new Error(`Handler for task ${this.name} is not found`);
}
return this._handler(args, options);
}
}
exports.Task = Task;
//# sourceMappingURL=Task.js.map