Launch Week Day 1: Socket for Jira Is Now Available.Learn More
Socket
Book a DemoSign in
Socket

@inlustra/task-runner

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@inlustra/task-runner

A Task

latest
Source
npmnpm
Version
1.0.0
Version published
Maintainers
1
Created
Source

Inlustra's Task Runner

A sub-task manager/pipeline to handle child processes.

Install

  npm i @inlustra/task-manager

TL:DR

Takes jobs (Child Processes) and handles piping up to a single stream across processes. A Task is made up of multiple jobs with a previous job condition (eg. the previous job must be a success)

  • Jobs are run consecutively
  • All stage updates (Complete, Error, Cancelled, Skipped) are bubbled up through events.
  • Handles errors without blowing up (If not handled explicitly!)

The simplest way to get tasks running one after the other

Create a task, made up of multiple jobs, this is the equivalent of a pipeline

const task = {
  name: 'A Simple Task',
  description: 'A task to list some files',
  jobs: [
    new ShellJob('ls ./'), // List the files
    new ShellJob('sleep 5'), // Sleep for 5 seconds
    new ShellJob('exit 1'), // Then error
    new ShellJob('echo "This won\'t appear!"') // The task runner won't run this job
  ]
}

const taskHandler = new TaskHandler(task)
taskHandler.on(TaskHandler.Events.STAGE_UPDATE, (stages) => {
  console.log('The next stage in the task has run!')
  console.log(stages)
})

Using the task runner to add tasks

const task = {
  name: 'A Simple Task',
  description: 'A task to list some files',
  jobs: [
    new ShellJob('ls ./'), // List the files
    new ShellJob('sleep 5'), // Sleep for 5 seconds
    new ShellJob('exit 1'), // Then error
    new ShellJob('echo "This won\'t appear!"') // The task runner won't run this job
  ]
}

Register the task, add your pipes and start it!

const taskRunner = new TaskRunner()
taskRunner.addGlobalPipe(process.stdout) // Will print all outputs from any tasks to the console
const taskKey = taskRunner.register(task)
taskRunner.addTaskPipe(taskKey, fs.createWriteStream('./'))

TODO

  • Document the options available (Jobs can run on error)
  • Document the Event types in TaskHandler and TaskRunner
  • Bubble up errors to the developer

Keywords

task

FAQs

Package last updated on 02 Feb 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts