| 'use strict'; |
| |
| var stream = require('stream'); |
| var util = require('util'); |
| var replace = require('./replace'); |
| |
| var jsonExtRe = /\.json$/; |
| |
| module.exports = function(rootEnv) { |
| rootEnv = rootEnv || process.env; |
| return function (file, trOpts) { |
| if (jsonExtRe.test(file)) { |
| return stream.PassThrough(); |
| } |
| var envs = trOpts ? [rootEnv, trOpts] : [rootEnv]; |
| return new LooseEnvify(envs); |
| }; |
| }; |
| |
| function LooseEnvify(envs) { |
| stream.Transform.call(this); |
| this._data = ''; |
| this._envs = envs; |
| } |
| util.inherits(LooseEnvify, stream.Transform); |
| |
| LooseEnvify.prototype._transform = function(buf, enc, cb) { |
| this._data += buf; |
| cb(); |
| }; |
| |
| LooseEnvify.prototype._flush = function(cb) { |
| var replaced = replace(this._data, this._envs); |
| this.push(replaced); |
| cb(); |
| }; |