task.ts 430 B

1234567891011121314151617181920212223
  1. export type TaskRunner<T> = (options: T) => Promise<any>;
  2. export class Task<TOptions> {
  3. name: string;
  4. runner: (options: TOptions) => Promise<any>;
  5. options: TOptions;
  6. setName = name => {
  7. this.name = name;
  8. };
  9. setRunner = (runner: TaskRunner<TOptions>) => {
  10. this.runner = runner;
  11. };
  12. setOptions = options => {
  13. this.options = options;
  14. };
  15. exec = () => {
  16. return this.runner(this.options);
  17. };
  18. }