/
triggers.js
57 lines (47 loc) · 1.18 KB
/
triggers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
var parse = require('parse-procfile')
var merge = require('merge-concat')
var fs = require('fs')
var path = require('path')
function processTriggers(filepath, triggers){
var folder = path.dirname(filepath)
Object.keys(triggers || {}).forEach(function(key){
var trigger = triggers[key]
var startPipe = ''
var endPipe = ''
trigger = trigger.replace(/^\s*\|/, function(){
startPipe = '| '
return ''
})
trigger = trigger.replace(/\|\s*$/, function(){
endPipe = ' |'
return ''
})
trigger = trigger.replace(/\s*$/, '')
triggers[key] = startPipe + '(cd ' + folder + '; ' + trigger + ')' + endPipe
})
return triggers
}
module.exports = function(files){
var data = files.map(function(file){
if(!fs.existsSync(file)){
throw new Error(file + ' does not exist')
}
if(fs.statSync(file).isDirectory()){
throw new Error(file + ' is a directory')
}
var content = fs.readFileSync(file, 'utf8')
return processTriggers(file, parse(content))
})
var flat = merge(data, function(prev, next, field){
if(next.match(/^\|\s*/)){
return prev + ' ' + next
}
else if(next.match(/\|\s*$/)){
return next + ' ' + prev
}
else{
return next
}
})
return flat
}