Comparing version 1.1.8 to 1.2.0
@@ -0,1 +1,4 @@ | ||
# 20200303, v1.2.0 | ||
* Removed task manager options since it was making things complicated. It shall now be executed after each initiation. | ||
# 20200302, v1.1.1 | ||
@@ -2,0 +5,0 @@ * Fixed time measuring. |
@@ -0,26 +1,17 @@ | ||
import { Listr } from '../listr'; | ||
import { ListrContext, ListrTask, ListrOptions } from './listr.interface'; | ||
export declare class ManagerClass<Ctx = ListrContext> { | ||
constructor(options?: ManagerOptions); | ||
addInitial<Ctx>(tasks: ListrTask<Ctx>[]): void; | ||
add<Ctx>(tasks: ListrTask<Ctx>[]): void; | ||
addFinal<Ctx>(tasks: ListrTask<Ctx>[]): void; | ||
runAll<Ctx>(options?: Exclude<ListrOptions<Ctx>, { | ||
export declare class ManagerClass<InjectCtx = ListrContext> { | ||
constructor(options?: ManagerOptions, listrOptions?: ListrOptions<InjectCtx>); | ||
add<Ctx = InjectCtx>(tasks: ListrTask<Ctx>[]): void; | ||
injectOptions<Ctx = InjectCtx>(options?: ManagerOptions, ListrOptions?: ListrOptions<Ctx>): void; | ||
runAll<Ctx = InjectCtx>(options?: Exclude<ListrOptions<Ctx>, { | ||
concurrent: any; | ||
}>): Promise<Ctx>; | ||
run<Ctx>(tasks: ListrTask<Ctx>[], options?: ListrOptions): Promise<Ctx>; | ||
run<Ctx = InjectCtx>(tasks: ListrTask<Ctx>[], options?: ListrOptions): Promise<Ctx>; | ||
newListr<Ctx = InjectCtx>(tasks: ListrTask<Ctx>[], options?: ListrOptions<Ctx>): Listr<Ctx>; | ||
getRunTime(pipetime: number): string; | ||
} | ||
export interface ManagerInjectOptions<Ctx = ListrContext> { | ||
initial?: Exclude<ListrOptions<Ctx>, { | ||
concurrent: any; | ||
}>; | ||
parallel?: Exclude<ListrOptions<Ctx>, { | ||
concurrent: any; | ||
}>; | ||
final?: Exclude<ListrOptions<Ctx>, { | ||
concurrent: any; | ||
}>; | ||
} | ||
export interface ManagerOptions { | ||
export interface ManagerOptions<Ctx = ListrContext> { | ||
showRunTime?: boolean; | ||
listr: ListrOptions<Ctx>; | ||
} |
@@ -68,3 +68,3 @@ "use strict"; | ||
buffer += data; | ||
const deleteMultiLineRegexp = new RegExp(/.*\u001b\[.*G.*/); | ||
const deleteMultiLineRegexp = new RegExp(/.*(\u001b\[.*G|\u0007).*/m); | ||
if (deleteMultiLineRegexp.test(buffer.toString())) { | ||
@@ -71,0 +71,0 @@ buffer = Buffer.alloc(64); |
import { ListrContext, ListrOptions, ListrTask } from './interfaces/listr.interface'; | ||
import { ManagerOptions, ManagerInjectOptions } from './interfaces/manager.interface'; | ||
import { ManagerOptions } from './interfaces/manager.interface'; | ||
import { Listr } from './listr'; | ||
export declare class Manager<InjectCtx = ListrContext> { | ||
private options?; | ||
private initially; | ||
private initialOptions; | ||
private listrOptions?; | ||
private tasks; | ||
private parallelOptions; | ||
private finally; | ||
private finalOptions; | ||
constructor(options?: ManagerOptions); | ||
addInitial<Ctx = InjectCtx>(tasks: ListrTask<Ctx>[]): void; | ||
constructor(options?: ManagerOptions, listrOptions?: ListrOptions<InjectCtx>); | ||
add<Ctx = InjectCtx>(tasks: ListrTask<Ctx>[]): void; | ||
addFinal<Ctx = InjectCtx>(tasks: ListrTask<Ctx>[]): void; | ||
injectOptions(options: ManagerInjectOptions): void; | ||
runAll<Ctx = InjectCtx>(options?: Exclude<ListrOptions, { | ||
concurrent: any; | ||
}>): Promise<Ctx>; | ||
run<Ctx>(tasks: ListrTask<Ctx>[], options?: ListrOptions<Ctx>): Promise<Ctx>; | ||
injectOptions<Ctx = InjectCtx>(options?: ManagerOptions, ListrOptions?: ListrOptions<Ctx>): void; | ||
runAll<Ctx>(options?: ListrOptions<Ctx> & { | ||
showRunTime?: boolean; | ||
}): Promise<Ctx>; | ||
newListr<Ctx = InjectCtx>(tasks: ListrTask<Ctx>[], options?: ListrOptions<Ctx>): Listr<Ctx>; | ||
run<Ctx = InjectCtx>(tasks: ListrTask<Ctx>[], options?: ListrOptions<Ctx>): Promise<Ctx>; | ||
getRuntime(pipetime: number): string; | ||
} |
@@ -5,67 +5,39 @@ "use strict"; | ||
class Manager { | ||
constructor(options) { | ||
constructor(options, listrOptions) { | ||
this.options = options; | ||
this.initially = []; | ||
this.listrOptions = listrOptions; | ||
this.tasks = []; | ||
this.finally = []; | ||
this.options = Object.assign({ showRunTime: true }, this.options); | ||
} | ||
addInitial(tasks) { | ||
this.initially = [...this.initially, ...tasks]; | ||
} | ||
add(tasks) { | ||
this.tasks = [...this.tasks, ...tasks]; | ||
} | ||
addFinal(tasks) { | ||
this.finally = [...this.finally, ...tasks]; | ||
} | ||
injectOptions(options) { | ||
if (options === null || options === void 0 ? void 0 : options.initial) { | ||
this.initialOptions = options.initial; | ||
injectOptions(options, ListrOptions) { | ||
if (options) { | ||
this.options = options; | ||
} | ||
if (options === null || options === void 0 ? void 0 : options.parallel) { | ||
this.parallelOptions = options.parallel; | ||
if (this.listrOptions) { | ||
this.listrOptions = ListrOptions; | ||
} | ||
if (options === null || options === void 0 ? void 0 : options.final) { | ||
this.finalOptions = options.final; | ||
} | ||
} | ||
async runAll(options) { | ||
let pipetime; | ||
const managerTasks = [ | ||
{ | ||
enabled: () => this.initially.length > 0, | ||
task: () => new listr_1.Listr(this.initially, this.initialOptions) | ||
}, | ||
{ | ||
const pipetime = Date.now(); | ||
options = Object.assign({ showRuntime: true }, options); | ||
const { showRunTime, ...listrOptions } = options; | ||
const allOptions = Object.assign(this.options || {}, listrOptions); | ||
return new listr_1.Listr([{ | ||
enabled: () => this.tasks.length > 0, | ||
task: () => { | ||
pipetime = Date.now(); | ||
return new listr_1.Listr(this.tasks, { concurrent: true, ...this.parallelOptions }); | ||
return new listr_1.Listr(this.tasks, listrOptions); | ||
} | ||
}, | ||
{ | ||
enabled: () => { var _a; return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.showRunTime) && (this.tasks.length > 0); }, | ||
enabled: () => showRunTime && (this.tasks.length > 0), | ||
task: (ctx, task) => { task.title = `Parallel tasks are finished in ${this.getRuntime(pipetime)}.`; } | ||
}, | ||
{ | ||
enabled: () => this.finally.length > 0, | ||
task: () => new listr_1.Listr(this.finally, this.finalOptions) | ||
}, | ||
{ | ||
task: () => { | ||
this.initially = []; | ||
this.initialOptions = {}; | ||
this.tasks = []; | ||
this.parallelOptions = {}; | ||
this.finally = []; | ||
this.finalOptions = {}; | ||
} | ||
} | ||
]; | ||
Object.assign(options || {}, { concurrent: false }); | ||
return this.run(managerTasks, options); | ||
}], allOptions).run(); | ||
} | ||
newListr(tasks, options) { | ||
return new listr_1.Listr(tasks, options); | ||
} | ||
run(tasks, options) { | ||
return new listr_1.Listr(tasks, options).run(); | ||
return this.newListr(tasks, options).run(); | ||
} | ||
@@ -72,0 +44,0 @@ getRuntime(pipetime) { |
{ | ||
"name": "listr2", | ||
"version": "1.1.8", | ||
"version": "1.2.0", | ||
"description": "Terminal task list reborn!", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -70,27 +70,7 @@ Listr2 | ||
### Initial Tasks | ||
* Initial tasks will be executed in order at the beginning. | ||
* You can also inject your type through add initial interface if initiating it via defining a type is not possible. ```manager.addInitial<Ctx>([])``` | ||
### Add Tasks | ||
```typescript | ||
manager.addInitial([]) | ||
``` | ||
### Parallel Tasks | ||
* This tasks will be run as async. | ||
* If showRuntime option enabled while generating manager, it will show the run time of async part. | ||
* You can also inject your type through add initial interface if initiating it via defining a type is not possible. ```manager.add<Ctx>([])``` | ||
```typescript | ||
manager.add([]) | ||
``` | ||
### Final Tasks | ||
* Final tasks will be executed in order at the end. | ||
* You can also inject your type through add initial interface if initiating it via defining a type is not possible. ```manager.addFinal<Ctx>([])``` | ||
```typescript | ||
manager.addFinal([]) | ||
``` | ||
### Run Tasks that are in Queue | ||
@@ -100,3 +80,3 @@ * This will also return the context object back. | ||
```typescript | ||
const ctx = await manager.runAll() | ||
const ctx = await manager.runAll<Ctx>({concurrent: true}) | ||
``` | ||
@@ -103,0 +83,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
73370
1098
123