beelzebub
Version:
One Hell of a Task Master!
4,070 lines (1,174 loc) • 53.1 kB
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>BzTasks - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="BzTasks.html">BzTasks</a><ul class='methods'><li data-type='method'><a href="BzTasks.html#$addSubTasks">$addSubTasks</a></li><li data-type='method'><a href="BzTasks.html#$defineTaskVars">$defineTaskVars</a></li><li data-type='method'><a href="BzTasks.html#$getGlobalVars">$getGlobalVars</a></li><li data-type='method'><a href="BzTasks.html#$getName">$getName</a></li><li data-type='method'><a href="BzTasks.html#$getRunning">$getRunning</a></li><li data-type='method'><a href="BzTasks.html#$getStatsSummary">$getStatsSummary</a></li><li data-type='method'><a href="BzTasks.html#$getSubTask">$getSubTask</a></li><li data-type='method'><a href="BzTasks.html#$getSubTasks">$getSubTasks</a></li><li data-type='method'><a href="BzTasks.html#$getTask">$getTask</a></li><li data-type='method'><a href="BzTasks.html#$getTaskFlatList">$getTaskFlatList</a></li><li data-type='method'><a href="BzTasks.html#$getTaskTree">$getTaskTree</a></li><li data-type='method'><a href="BzTasks.html#$getVarDefsForTaskName">$getVarDefsForTaskName</a></li><li data-type='method'><a href="BzTasks.html#$hasRunBefore">$hasRunBefore</a></li><li data-type='method'><a href="BzTasks.html#$hasSubTask">$hasSubTask</a></li><li data-type='method'><a href="BzTasks.html#$hasTask">$hasTask</a></li><li data-type='method'><a href="BzTasks.html#$isRoot">$isRoot</a></li><li data-type='method'><a href="BzTasks.html#$parallel">$parallel</a></li><li data-type='method'><a href="BzTasks.html#$printHelp">$printHelp</a></li><li data-type='method'><a href="BzTasks.html#$register">$register</a></li><li data-type='method'><a href="BzTasks.html#$run">$run</a></li><li data-type='method'><a href="BzTasks.html#$sequence">$sequence</a></li><li data-type='method'><a href="BzTasks.html#$setDefault">$setDefault</a></li><li data-type='method'><a href="BzTasks.html#$setGlobalVars">$setGlobalVars</a></li><li data-type='method'><a href="BzTasks.html#$setName">$setName</a></li><li data-type='method'><a href="BzTasks.html#$setSubTask">$setSubTask</a></li><li data-type='method'><a href="BzTasks.html#$setSubTasks">$setSubTasks</a></li><li data-type='method'><a href="BzTasks.html#$setTaskHelpDocs">$setTaskHelpDocs</a></li><li data-type='method'><a href="BzTasks.html#$useAsRoot">$useAsRoot</a></li></ul></li></ul><h3>Interfaces</h3><ul><li><a href="BzTasks_$afterAll.html">$afterAll</a></li><li><a href="BzTasks_$afterEach.html">$afterEach</a></li><li><a href="BzTasks_$beforeAll.html">$beforeAll</a></li><li><a href="BzTasks_$beforeEach.html">$beforeEach</a></li><li><a href="BzTasks_$init.html">$init</a></li></ul>
</nav>
<div id="main">
<h1 class="page-title">BzTasks</h1>
<section>
<header>
<h2>
BzTasks
</h2>
<div class="class-description"><p>Beelzebub Task Class, should be extended</p></div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="BzTasks"><span class="type-signature"></span>new BzTasks<span class="signature">()</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line18">line 18</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Methods</h3>
<h4 class="name" id="$addSubTasks"><span class="type-signature"></span>$addSubTasks<span class="signature">(Task, config<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line504">line 504</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Add Sub Tasks</p>
</div>
<h5>Example</h5>
<pre class="prettyprint"><code> let Beelzebub = require('../../');
let bz = Beelzebub(options || { verbose: true });
class MyBaseTasks extends Beelzebub.Tasks {
constructor (config) {
super(config);
this.$setName(config.name || 'MyBaseTasks');
this.value = config.value;
this._delayTime = 300;
}
$init () {
return this._delay('MyBaseTasks init');
}
_delay (message) {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.logger.log(message);
resolve();
}, this._delayTime);
});
}
task1 () {
return this._delay('MyBaseTasks task1 - ' + this.value);
}
}
class MyTasks extends Beelzebub.Tasks {
constructor (config) {
super(config);
this.$setName('MyTasks');
}
$init () {
this.logger.log('MyTasks init');
// simlate tasks dynamiclly added after some async event
return new Promise((resolve, reject) => {
setTimeout(() => {
this.$addSubTasks(MyBaseTasks, { name: 'MyBaseTasks1', value: 123 });
this.$addSubTasks(MyBaseTasks, { name: 'MyBaseTasks2', value: 456 });
// done
resolve(1234);
}, 200);
});
}
task1 () {
this.logger.log('MyTasks task1');
return this.$sequence('MyTasks.MyBaseTasks1.task1', 'MyTasks.MyBaseTasks2.task1');
}
}
bz.add(MyTasks);
let p = bz.run('MyTasks.task1');
/* Output:
MyTasks init
MyBaseTasks init
MyBaseTasks init
MyTasks task1
MyBaseTasks task1 - 123
MyBaseTasks task1 - 456
*/
</code></pre>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>Task</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>Task Class</p></td>
</tr>
<tr>
<td class="name"><code>config</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
<code>{}</code>
</td>
<td class="description last"><p>Config for Task</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
<p>Promise</p>
</div>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$defineTaskVars"><span class="type-signature"></span>$defineTaskVars<span class="signature">(taskName, taskDef)</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line271">line 271</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Define Task Vars</p>
</div>
<h5>Example</h5>
<pre class="prettyprint"><code> const Beelzebub = require('../../');
const bz = Beelzebub(options || { verbose: true });
const task = Beelzebub.TmplStrFunc.task;
class MyTasks extends Beelzebub.Tasks {
constructor (config) {
super(config);
this.$defineTaskVars('task1', {
name: { type: 'String', default: 'hello' },
flag: { type: 'Boolean', default: true }
});
this.$defineTaskVars('task2', {
count: { type: 'Number', required: true },
verbose: { type: 'Boolean', alias: 'v', default: false }
});
this.$defineTaskVars('task3', {
fullname: {
type: 'Object',
properties: {
first: { type: 'String' },
last: { type: 'String' }
}
},
list: {
type: 'Array',
items: { type: 'String' }
}
});
}
task1 (customVars) {
this.logger.log(`MyTasks task1 - ${JSON.stringify(this.$getGlobalVars())} ${customVars.name} ${customVars.flag}`);
}
task2 (customVars) {
this.logger.log(`MyTasks task2 - ${customVars.count} ${customVars.verbose}`);
}
task3 (customVars) {
this.logger.log(`MyTasks task3 - "${customVars.fullname.first} ${customVars.fullname.last}" ${customVars.list}`);
}
}
bz.add(MyTasks);
let p = bz.run(
'MyTasks.task1',
task`MyTasks.task2:${{count: 100, verbose: true}}`,
{
task: 'MyTasks.task3',
vars: {
fullname: { first: 'hello', last: 'world' },
list: [ 'te', 'st' ]
}
}
);
/* Output:
MyTasks task1 - {} hello true
MyTasks task2 - 100 true
MyTasks task3 - "hello world" te,st
*/
</code></pre>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>taskName</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>Name of Task</p></td>
</tr>
<tr>
<td class="name"><code>taskDef</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>Var Defintion for Task</p></td>
</tr>
</tbody>
</table>
<h4 class="name" id="$getGlobalVars"><span class="type-signature"></span>$getGlobalVars<span class="signature">()</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line261">line 261</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get Global Vars</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$getName"><span class="type-signature"></span>$getName<span class="signature">()</span><span class="type-signature"> → {string}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line189">line 189</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get name of Task Group/Class</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
</dd>
</dl>
<h4 class="name" id="$getRunning"><span class="type-signature"></span>$getRunning<span class="signature">()</span><span class="type-signature"> → {boolean}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line365">line 365</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Is Task Running?</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
<h4 class="name" id="$getStatsSummary"><span class="type-signature"></span>$getStatsSummary<span class="signature">()</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line114">line 114</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get task status and all it's sub tasks stats</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$getSubTask"><span class="type-signature"></span>$getSubTask<span class="signature">(name)</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line215">line 215</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get SubTask by Name</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>Name of Sub Task</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$getSubTasks"><span class="type-signature"></span>$getSubTasks<span class="signature">()</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line239">line 239</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get All Sub Task(s)</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$getTask"><span class="type-signature"></span>$getTask<span class="signature">(name)</span><span class="type-signature"> → {function}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line198">line 198</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get Task by Name</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>Name of Task to get</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">function</span>
</dd>
</dl>
<h4 class="name" id="$getTaskFlatList"><span class="type-signature"></span>$getTaskFlatList<span class="signature">()</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line93">line 93</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get flatten task tree so it's one level</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$getTaskTree"><span class="type-signature"></span>$getTaskTree<span class="signature">()</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line60">line 60</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get Task Tree starting with this task</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$getVarDefsForTaskName"><span class="type-signature"></span>$getVarDefsForTaskName<span class="signature">(taskStr)</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line298">line 298</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Get Define Task Vars by Name</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>taskStr</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>Name of Task</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
<p>Varaible Definition for Task</p>
</div>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$hasRunBefore"><span class="type-signature"></span>$hasRunBefore<span class="signature">()</span><span class="type-signature"> → {boolean}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line165">line 165</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Has any of the tasks ran before?</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
<h4 class="name" id="$hasSubTask"><span class="type-signature"></span>$hasSubTask<span class="signature">(name)</span><span class="type-signature"> → {boolean}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line231">line 231</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Does this have a Sub Task with the name?</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>Name of Sub Task</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
<h4 class="name" id="$hasTask"><span class="type-signature"></span>$hasTask<span class="signature">(name)</span><span class="type-signature"> → {boolean}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line206">line 206</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Does this Task Group have a Task with the name?</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>Name of Task</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
<h4 class="name" id="$isRoot"><span class="type-signature"></span>$isRoot<span class="signature">()</span><span class="type-signature"> → {boolean}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line173">line 173</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Is this task root level?</p>
</div>
<h5>Returns:</h5>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
<h4 class="name" id="$parallel"><span class="type-signature"></span>$parallel<span class="signature">(…args)</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line640">line 640</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Runs task(s) in parallel</p>
</div>
<h5>Example</h5>
<pre class="prettyprint"><code> let Beelzebub = require('../../');
let bz = Beelzebub(options || { verbose: true });
class MyTasks extends Beelzebub.Tasks {
_delay (message, delay = 300) {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.logger.log(message);
resolve();
}, delay);
});
}
task1 () {
this.logger.log('MyTasks task1');
return this.$parallel('.task3', '.task4');
}
task2 () {
return this._delay('MyTasks task2', 200);
}
task3 () {
this.logger.log('MyTasks task3');
return this.$run(['.task5', '.task6']);
}
task4 () {
return this._delay('MyTasks task4', 400);
}
task5 () {
this.logger.log('MyTasks task5');
}
task6 () {
return this._delay('MyTasks task6', 600);
}
}
bz.add(MyTasks);
// arrays are run in parallel
let p = bz.run(['MyTasks.task1', 'MyTasks.task2']);
/* Output:
MyTasks task1
MyTasks task3
MyTasks task5
MyTasks task2
MyTasks task4
MyTasks task6
*/
</code></pre>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>args</code></td>
<td class="type">
<span class="param-type">function</span>
|
<span class="param-type">string</span>
</td>
<td class="attributes">
<repeatable><br>
</td>
<td class="description last"><p>task(s)</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
<p>Promise</p>
</div>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$printHelp"><span class="type-signature"></span>$printHelp<span class="signature">()</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line128">line 128</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Prints Task help and all sub tasks help</p>
</div>
<h5>Example</h5>
<pre class="prettyprint"><code> const Beelzebub = require('../../');
const bz = Beelzebub(options || { verbose: true });
class MyTasks extends Beelzebub.Tasks {
constructor (config) {
super(config);
this.$setDefault('task1');
this.$setTaskHelpDocs('task1', 'ES7 Decorator Example MyTasks - Task 1');
this.$setTaskHelpDocs('task2', 'ES7 Decorator Example MyTasks - Task 2');
}
task1 () {
this.logger.log('MyTasks task1');
}
task2 () {
this.logger.log('MyTasks task2');
}
}
bz.add(MyTasks);
class MyTasks2 extends bz.Tasks {
constructor (config) {
super(config);
this.$setDefault('task1');
this.$setTaskHelpDocs('task1', 'ES7 Decorator Example MyTasks2 - Task 1');
this.$setTaskHelpDocs('task2', 'ES7 Decorator Example MyTasks2 - Task 2');
}
task1 () {
this.logger.log('MyTasks2 task1');
}
task2 () {
this.logger.log('MyTasks2 task2');
}
}
bz.add(MyTasks2);
let p = bz.run('MyTasks', 'MyTasks.task2', 'MyTasks2', 'MyTasks2.task2');
// prints help results
// bz.printHelp();
/* Output:
MyTasks task1
MyTasks task2
MyTasks2 task1
MyTasks2 task2
*/
</code></pre>
<h4 class="name" id="$register"><span class="type-signature"></span>$register<span class="signature">()</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line373">line 373</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Register the Task with BZ</p>
</div>
<h5>Returns:</h5>
<div class="param-desc">
<p>Promise</p>
</div>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$run"><span class="type-signature"></span>$run<span class="signature">(…args)</span><span class="type-signature"> → {object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line650">line 650</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Runs task(s) - multi args run in sequence, arrays are run in parallel</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>args</code></td>
<td class="type">
<span class="param-type">function</span>
|
<span class="param-type">string</span>
</td>
<td class="attributes">
<repeatable><br>
</td>
<td class="description last"><p>task(s)</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
<p>Promise</p>
</div>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">object</span>
</dd>
</dl>
<h4 class="name" id="$sequence"><span class="type-signature"></span>$sequence<span class="signature">(…args)</span><span class="type-signature"> → {Object}</span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line629">line 629</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Runs task(s) in sequence</p>
</div>
<h5>Example</h5>
<pre class="prettyprint"><code> let Beelzebub = require('../../');
let bz = Beelzebub(options || { verbose: true });
class MyTasks extends Beelzebub.Tasks {
_delay (message, delay = 300) {
return new Promise((resolve, reject) => {
setTimeout(() => {
this.logger.log(message);
resolve();
}, delay);
});
}
task1 () {
this.logger.log('MyTasks task1');
return this.$sequence('.task3', '.task4');
}
task2 () {
return this._delay('MyTasks task2', 200);
}
task3 () {
this.logger.log('MyTasks task3');
return this.$run('.task5', '.task6');
}
task4 () {
return this._delay('MyTasks task4', 400);
}
task5 () {
this.logger.log('MyTasks task5');
}
task6 () {
return this._delay('MyTasks task6', 600);
}
}
bz.add(MyTasks);
// params are run in sequence
let p = bz.run('MyTasks.task1', 'MyTasks.task2');
/* Output:
MyTasks task1
MyTasks task3
MyTasks task5
MyTasks task6
MyTasks task4
MyTasks task2
*/
</code></pre>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>args</code></td>
<td class="type">
<span class="param-type">object</span>
|
<span class="param-type">string</span>
</td>
<td class="attributes">
<repeatable><br>
</td>
<td class="description last"><p>task(s)</p></td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
<p>Promise</p>
</div>
<dl class="param-type">
<dt>
Type
</dt>
<dd>
<span class="param-type">Object</span>
</dd>
</dl>
<h4 class="name" id="$setDefault"><span class="type-signature"></span>$setDefault<span class="signature">(taskFuncName)</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line157">line 157</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Set a Task as default</p>
</div>
<h5>Example</h5>
<pre class="prettyprint"><code> let Beelzebub = require('../../');
let bz = Beelzebub(options || { verbose: true });
class MyRootLevel extends Beelzebub.Tasks {
constructor (config) {
super(config);
this.$useAsRoot();
}
task1 () {
this.logger.log('MyRootLevel task1');
}
task2 () {
this.logger.log('MyRootLevel task2');
}
}
class MyTasks1 extends Beelzebub.Tasks {
default () {
this.logger.log('MyTasks1 default');
}
}
class MyTasks2 extends Beelzebub.Tasks {
constructor (config) {
super(config);
this.$setDefault('myDefault');
}
myDefault () {
this.logger.log('MyTasks2 myDefault');
}
}
bz.add(MyRootLevel);
bz.add(MyTasks1);
bz.add(MyTasks2);
let p = bz.run(
'task1',
'task2',
'MyTasks1',
'MyTasks1.default',
'MyTasks2',
'MyTasks2.myDefault'
);
/* Output:
MyRootLevel task1
MyRootLevel task2
MyTasks1 default
MyTasks1 default
MyTasks2 myDefault
MyTasks2 myDefault
*/
</code></pre>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>taskFuncName</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>This Class (Task) function name</p></td>
</tr>
</tbody>
</table>
<h4 class="name" id="$setGlobalVars"><span class="type-signature"></span>$setGlobalVars<span class="signature">(vars)</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line254">line 254</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Set Global Vars</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>vars</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<h4 class="name" id="$setName"><span class="type-signature"></span>$setName<span class="signature">(name)</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line181">line 181</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Set name of Task Group/Class, when refering to Task Group in CLI or other Tasks</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>New name of Task Group/Class</p></td>
</tr>
</tbody>
</table>
<h4 class="name" id="$setSubTask"><span class="type-signature"></span>$setSubTask<span class="signature">(name, task)</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line223">line 223</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Set SubTask</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>Name of Sub Task</p></td>
</tr>
<tr>
<td class="name"><code>task</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>Task Class</p></td>
</tr>
</tbody>
</table>
<h4 class="name" id="$setSubTasks"><span class="type-signature"></span>$setSubTasks<span class="signature">(tasks)</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line246">line 246</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Set All Sub Task(s)</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>tasks</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<h4 class="name" id="$setTaskHelpDocs"><span class="type-signature"></span>$setTaskHelpDocs<span class="signature">(taskName, helpDocs)</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="bzTasks.js.html">bzTasks.js</a>, <a href="bzTasks.js.html#line285">line 285</a>
</li></ul></dd>
</dl>
<div class="description">
<p>Set Help Docs for Task</p>
</div>
<h5>Example</h5>
<pre class="prettyprint"><code> const Beelzebub = require('../../');
const bz = Beelzebub(options || { verbose: true });
class MyTasks extends Beelzebub.Tasks {
constructor (config) {
super(config);
this.$setDefault('task1');
this.$setTaskHelpDocs('task1', 'ES7 Decorator Example MyTasks - Task 1');
this.$setTaskHelpDocs('task2', 'ES7 Decorator Example MyTasks - Task 2');
}
task1 () {
this.logger.log('MyTasks task1');
}
task2 () {
this.logger.log('MyTasks task2');
}
}
bz.add(MyTasks);
class MyTasks2 extends bz.Tasks {
constructor (config) {
super(config);
this.$setDefault('task1');
this.$setTaskHelpDocs('task1', 'ES7 Decorator Example MyTasks2 - Task 1');
this.$setTaskHelpDocs('task2', 'ES7 Decorator Example MyTasks2 - Task 2');
}
task1 () {
this.logger.log('MyTasks2 task1');
}
task2 () {
this.logger.log('MyTasks2 task2');
}
}
bz.add(MyTasks2);
let p = bz.run('MyTasks', 'MyTasks.task2', 'MyTasks2', 'MyTasks2.task2');
// prints help results
// bz.printHelp();
/* Output:
MyTasks task1
MyTasks task2