UNPKG

828 BJavaScriptView Raw
1"use strict"
2
3const co = require("bluebird").coroutine
4const load = require("../plugins").load
5const find = require("../utils/find")
6const read = require("../utils/read")
7const Taskr = require("../taskr")
8
9/**
10 * Create a new Taskr instance
11 * @param {String} cwd The directory to find a `taskfile.js`
12 * @return {Taskr} The new Taskr instance
13 */
14module.exports = co(function * (cwd) {
15 const file = yield find("taskfile.js", cwd)
16
17 if (!file) {
18 return new Taskr()
19 }
20
21 // find & `require()`. will load `@taskr/esnext` before spawning
22 const plugins = yield load(file)
23
24 // spawn options
25 const opts = {cwd, file, plugins}
26
27 try {
28 const esnext = require("@taskr/esnext")
29 if (esnext) {
30 const data = yield read(file, "utf8")
31 opts.tasks = esnext(file, data)
32 }
33 } catch (err) {}
34
35 return new Taskr(opts)
36})