UNPKG

1.19 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const { join, isAbsolute } = require('path')
4const stamp = require('stamp').create()
5const task = require('../')
6const fs = require('fs')
7const args = process.argv
8const cwd = process.cwd()
9const arg = arg => {
10 for (var i = 0, values; i < args.length; i++) {
11 if (values) {
12 if (args[i][0] === '-') break
13 else values.push(args[i])
14 } else if (args[i] === arg) {
15 values = []
16 }
17 }
18 return values
19}
20
21;(arg('-c') || arg('--config') || ['task.config.js']).forEach(config => {
22 if (!isAbsolute(config)) {
23 config = join(cwd, config)
24 }
25
26 if (fs.existsSync(config)) {
27 console.log('reading tasks from', config)
28 task.set({
29 tasks: {
30 [config]: require(config)
31 }
32 }, stamp)
33 } else {
34 console.log('WARNING: config file does not exist:', config)
35 }
36})
37
38let hasTask = false
39if (task.tasks) {
40 task.tasks.forEach(() => (hasTask = true))
41}
42if (!hasTask) {
43 throw Error('no task to execute')
44}
45
46const watch = arg('-w') || arg('--watch')
47
48if (!watch) task.get('done', {}).on(() => process.exit())
49
50task.on('error', err => {
51 if (watch) {
52 console.log('task error:', err)
53 } else {
54 throw err
55 }
56})