tidying-core
Architecture
This is still WIP.
- Plugins are given access to the entirety of the core library and are called at certain callback points.
- Tasks are the main part of the application and are composed together to create meaningful work. Tasks could come in several logical kinds including control tasks, filters, inputs, outputs, transforms, etc.
- There are several built-in plugins and tasks, however most are distributed as external modules.
Sample configuration:
plugins: tasks: // There is an implicit ExecuteParallel around the root tasks // Execute tasks in parallel // Execute tasks sequentially (without passing output from one to the next) // Pipe the output of one task into another task // Pipe the output of one task into multiple tasks in parallel // Pipe the output of one task into multiple tasks in sequentially // Complex shorthand example // Task 1 runs, piping output into Task 2, 3, 7, and 10 simultaneously. // Task 2 exits when complete // Task 3 pipes output to Task 4, which pipes its output into Task 5. // Task 5 exits when complete. // Task 7 does not pipe its output, but rather starts Task 8 on completion. // Task 8 does not pipe its output, but rather starts Task 9 on completion. // Task 9 exits when complete. // Task 10 does not pipe its output, but rather starts Task 11 and Task 12 simultaneously when complete. // Tasks 11 and 12 exit when complete. 1 state: {};