UNPKG

1.81 kBTypeScriptView Raw
1import { Tasks } from "./task.resolve";
2import { SequenceItem } from "./task.sequence.factories";
3import { CommandTrigger } from "./command.run";
4import Rx = require("rx");
5import Immutable = require("immutable");
6export interface Runner {
7 series: (ctx?: RunContext) => Rx.Observable<TaskReport>;
8 parallel: (ctx?: RunContext) => Rx.Observable<TaskReport>;
9 sequence: SequenceItem[];
10}
11export interface TaskRunner {
12 tasks: Tasks;
13 sequence: SequenceItem[];
14 runner: Runner;
15}
16export interface TaskStats {
17 startTime: number;
18 endTime: number;
19 duration: number;
20 started: boolean;
21 completed: boolean;
22 errors: Error[];
23 skipped?: boolean;
24 skippedReadon?: TaskSkipReasons;
25}
26export interface TaskErrorStats {
27 endTime: number;
28 completed: boolean;
29 errors: Error[];
30 cbError?: boolean;
31 cbExitCode?: number;
32}
33export interface Report {
34 item: SequenceItem;
35 type: TaskReportType;
36}
37export declare enum TaskReportType {
38 start,
39 end,
40 error,
41}
42export declare enum TaskSkipReasons {
43 SkipFlag,
44 IfChanged,
45}
46export interface TaskReport extends Report {
47 stats: TaskStats;
48}
49export interface TaskErrorReport extends Report {
50 stats: TaskErrorStats;
51}
52export declare type RunContext = Immutable.Map<string, any>;
53/**
54 * This creates a wrapper around the actual function that will be run.
55 * This done to allow the before/after reporting to work as expected for consumers
56 */
57export declare function time(scheduler?: any): any;
58export declare function createObservableFromSequenceItem(item: SequenceItem, trigger: CommandTrigger, ctx: RunContext): Rx.Observable<{}>;
59/**
60 * Create a new stats object with startTime
61 */
62export declare function getStartStats(startTime: number, additional?: {
63 [index: string]: any;
64}): TaskStats;