jstty / beelzebub

One hell of a Task Master!
http://beelzebub.io
Other
8 stars 4 forks source link

relative tasks not working with root tasks #47

Open jstty opened 7 years ago

jstty commented 7 years ago

Example:

'use strict';
// !-- FOR TESTS
let wrapper = function (options) {
// --!

// =====================================================
// <EXAMPLE>
  let Beelzebub = require('../../');
  let bz = Beelzebub(options || { verbose: true });

  class MySubTask extends Beelzebub.Tasks {
    default () {
      this.logger.log('MySubTask default');
      return this.$sequence('.task1', '.task2');
    }

    task1 () {
      this.logger.log('MySubTask task1');
    }

    task2 () {
      this.logger.log('MySubTask task2');
    }
  }

  class MyTasks extends Beelzebub.Tasks {
    constructor (config) {
      super(config);

      this.$setDefault('myDefault');
    }

    myDefault () {
      this.logger.log('MyTasks myDefault');
    }
  }

  class MyRootLevel extends Beelzebub.Tasks {
    constructor (config) {
      super(config);

      this.$useAsRoot();
    }

    $init () {
      this.$addSubTasks(MySubTask);
    }

    task1 () {
      this.logger.log('MyRootLevel task1');
    }

    task2 () {
      this.logger.log('MyRootLevel task2');
    }
  }

  bz.add(MyRootLevel);
  bz.add(MyTasks);

  let p = bz.run(
    'task1',
    'MySubTask',
    'MySubTask.task1',
    'MyTasks',
    'MyTasks.myDefault'
  );
/* Output:
MyRootLevel task1
MySubTask default
MySubTask task1
MySubTask task2
MySubTask task1
MyTasks myDefault
MyTasks myDefault
*/
// </EXAMPLE>
// =====================================================

// !-- FOR TESTS
  return p.then(() => { return bz; });
};
module.exports = wrapper;
// if not running in test, then run wrapper
if (typeof global.it !== 'function') wrapper();
// --!