| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 'use strict';var assert = require('assert');var metadata = require('./helpers/metadata');function set(name, fn) {  assert(name, 'Task name must be specified');  assert(typeof name === 'string', 'Task name must be a string');  assert(typeof fn === 'function', 'Task function must be specified');  function taskWrapper() {    return fn.apply(this, arguments);  }  function unwrap() {    return fn;  }  taskWrapper.unwrap = unwrap;  taskWrapper.displayName = name;  var meta = metadata.get(fn) || {};  var nodes = [];  if (meta.branch) {    nodes.push(meta.tree);  }  var task = this._registry.set(name, taskWrapper) || taskWrapper;  metadata.set(task, {    name: name,    orig: fn,    tree: {      label: name,      type: 'task',      nodes: nodes,    },  });}module.exports = set;
 |