1 | creek = require('./creek')
|
2 |
|
3 | agg = creek.lazyBucketedAggregator.create()
|
4 |
|
5 | publicInterface = {}
|
6 |
|
7 | publicInterface.track = (name, opts) -> agg.track(name, opts)
|
8 |
|
9 | for name, code of creek.aggregators
|
10 | publicInterface[name] = code
|
11 |
|
12 | publicInterface.interface = (interfaceName, opts) ->
|
13 | opts ?= {}
|
14 | require("./interfaces/#{interfaceName}").init(agg, opts)
|
15 |
|
16 | publicInterface.parser = (parserName, opts) ->
|
17 | opts ?= {}
|
18 | require("./parsers/#{parserName}").init agg, opts, (record) ->
|
19 | bucket = if opts.bucketedBy? then record[opts.bucketedBy] else null
|
20 | timestamp = if opts.timestampedBy? then this record[opts.timestampedBy] else new Date()
|
21 | agg.push((bucket or 'default'), timestamp, record)
|
22 |
|
23 | exports.boot = (configFile) ->
|
24 | Script = process.binding('evals').Script
|
25 | code = require('fs').readFileSync(configFile, 'utf8')
|
26 | jsCode = require('coffee-script').compile(code)
|
27 | Script.runInNewContext(jsCode, publicInterface, configFile) |
\ | No newline at end of file |