1 | #!/usr/bin/env node
|
2 |
|
3 | const { join, isAbsolute } = require('path')
|
4 | const stamp = require('stamp').create()
|
5 | const task = require('../')
|
6 | const fs = require('fs')
|
7 | const args = process.argv
|
8 | const cwd = process.cwd()
|
9 | const 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 |
|
38 | let hasTask = false
|
39 | if (task.tasks) {
|
40 | task.tasks.forEach(() => (hasTask = true))
|
41 | }
|
42 | if (!hasTask) {
|
43 | throw Error('no task to execute')
|
44 | }
|
45 |
|
46 | const watch = arg('-w') || arg('--watch')
|
47 |
|
48 | if (!watch) task.get('done', {}).on(() => process.exit())
|
49 |
|
50 | task.on('error', err => {
|
51 | if (watch) {
|
52 | console.log('task error:', err)
|
53 | } else {
|
54 | throw err
|
55 | }
|
56 | })
|