1 | 'use strict';
|
2 |
|
3 | const dedent = require('dedent');
|
4 | const bunyan = require('./rewire')('bunyan/bin/bunyan', code => {
|
5 |
|
6 | code = code.replace(/^#!(.*?)\n/g, '');
|
7 |
|
8 |
|
9 | code = code.replace(
|
10 | /function\s+parseArgv\s*\(\s*argv\s*\)\s*{\s*var\s+parsed\s*=/m,
|
11 | dedent`
|
12 | function parseArgv(argv) {
|
13 | var parsed = { args: [] };
|
14 | parsed._defaults =
|
15 | `
|
16 | );
|
17 |
|
18 |
|
19 | code += dedent`
|
20 | \n;var format = require('util').format;
|
21 |
|
22 | exports.__set__ = function () {
|
23 | arguments.varName = arguments[0];
|
24 | arguments.varValue = arguments[1];
|
25 | return eval(format('%s = arguments.varValue;', arguments.varName));
|
26 | };
|
27 |
|
28 | exports.__get__ = function () {
|
29 | arguments.varName = arguments[0];
|
30 | return eval(arguments.varName);
|
31 | };
|
32 | `;
|
33 |
|
34 | return code;
|
35 | });
|
36 |
|
37 | const getter = (proxiedModule, name) => ({
|
38 | get: () => proxiedModule.__get__(name)
|
39 | });
|
40 |
|
41 | const prop = (proxiedModule, name) => ({
|
42 | ...getter(proxiedModule, name),
|
43 | set: val => proxiedModule.__set__(name, val)
|
44 | });
|
45 |
|
46 | module.exports = Object.defineProperties({}, {
|
47 | emit: prop(bunyan, 'emit'),
|
48 | emitRecord: prop(bunyan, 'emitRecord'),
|
49 | indent: getter(bunyan, 'indent'),
|
50 | isValidRecord: getter(bunyan, 'isValidRecord'),
|
51 | levelFromName: getter(bunyan, 'levelFromName'),
|
52 | main: getter(bunyan, 'main'),
|
53 | OM_FROM_NAME: getter(bunyan, 'OM_FROM_NAME'),
|
54 | OM_LONG: getter(bunyan, 'OM_LONG'),
|
55 | OM_SHORT: getter(bunyan, 'OM_SHORT'),
|
56 | parseArgv: prop(bunyan, 'parseArgv'),
|
57 | print: prop(bunyan, 'p'),
|
58 | printHelp: prop(bunyan, 'printHelp')
|
59 | });
|