UNPKG

2.29 kBtext/coffeescriptView Raw
1fs = require 'fs'
2path = require 'path'
3gulp = require './wrapper'
4Module = require './Module'
5gulpfile = require './gulpfile'
6
7getStack = (error) ->
8 s = null
9 b = Error.prepareStackTrace
10 Error.prepareStackTrace = (error, stack) ->
11 s = stack
12 b error, stack
13 stack = error.stack
14 Error.prepareStackTrace = b
15 return s
16
17logException = (ex) ->
18 stack = getStack ex
19 gulp.util.log [
20 gulp.util.colors.red(ex.name + ': ' + ex.message)
21 if stack[0].getFileName?()?[0] is '/' then [
22 ' at '
23 stack[0].getFileName() + ':'
24 stack[0].getLineNumber() + ':'
25 stack[0].getColumnNumber()
26 ].join '' else ''
27 ].join ''
28 console.log ex.stack
29
30module.exports = ({folder, gulp}) ->
31 folder = path.resolve folder
32 gulp.util.log 'Loading tasks from '+ (gulp.util.colors.magenta folder)
33 try
34 files = fs.readdirSync folder
35 files.forEach (relative) ->
36 try
37 file = path.resolve folder, relative
38 if fs.statSync(file).isFile()
39 ext = path.extname file
40 name = path.basename file, ext
41 if ext is '.js' or /\.((lit)?coffee|coffee\.md)$/.test file
42 gulp.util.log 'Found task \'' + (gulp.util.colors.cyan name) + '\''
43 try
44 taskModule = new Module(file, gulpfile)
45 taskModule.load file
46 task = taskModule.exports
47 gulp.task name, task.dependencies ? [], task
48 catch ex
49 stack = getStack ex
50 ###
51 gulp.util.log [
52 gulp.util.colors.red(ex.name + ': ' + ex.message)
53 ' in task \''
54 gulp.util.colors.cyan name
55 '\''
56 if stack[0].getFileName?()?[0] is '/' then [
57 ' at '
58 stack[0].getFileName() + ':'
59 stack[0].getLineNumber() + ':'
60 stack[0].getColumnNumber()
61 ].join '' else ''
62 ].join ''
63 ###
64 console.log ex.stack
65 catch ex
66 logException ex
67 msg = 'Couldn\'t read directory \'' + folder + '\''
68 throw new gulp.util.PluginError 'gulp-tasks', msg
69 catch ex
70 logException ex
71 throw new gulp.util.PluginError 'gulp-tasks', (ex.name + ': ' + ex.message)
72 return gulp
\No newline at end of file