Skip to content

Commit

Permalink
Merge pull request #528 from gshively11/pass-confit-options
Browse files Browse the repository at this point in the history
Accept confit options
  • Loading branch information
grawk committed Aug 16, 2023
2 parents 1305533 + f360663 commit d05970d
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 6 deletions.
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,17 @@ Handler for `uncaughtException` errors outside of the middleware chain. See the

For uncaught errors in the middleware chain, see `shutdown` middleware instead.

#### `confit` (*Object*, optional)
In rare cases, it may be useful to pass options directly to the confit module used within [lib/config.js](lib/config.js#71).
For example, if [confit/shortstop is conflicting with environment variables](https://github.com/krakenjs/kraken-js/issues/470), you can explicitly ignore those environment variables:
```javascript
var options = {
confit: {
envignore: ['troublesome_environment_variable']
}
};
```

## Config Protocols
kraken comes with the following shortstop protocol handlers by default:
#### `import:`
Expand Down
24 changes: 18 additions & 6 deletions lib/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ function configPath(prefix, configdir) {


exports.create = function create(options) {
var deferred, appProtocols, baseProtocols, baseFactory, appFactory;
var deferred, appProtocols, baseProtocols, baseFactory, appFactory, baseConfig, appConfig;

deferred = Bluebird.pending();
appProtocols = createHandlers(options);
Expand All @@ -60,17 +60,29 @@ exports.create = function create(options) {
appProtocols.resolve = ssresolve(configPath(options.basedir, options.configdir));
baseProtocols.resolve = ssresolve(configPath(path.dirname(__dirname)));

baseFactory = confit({ basedir: configPath(path.dirname(__dirname)), protocols: baseProtocols });
baseConfig = Object.assign(
{
basedir: configPath(path.dirname(__dirname)),
protocols: baseProtocols
},
options.confit || {}
);

baseFactory = confit(baseConfig);
baseFactory.create(function(err, baseConf) {
if (err) {
deferred.reject(err);
return;
}

appFactory = confit({
basedir: configPath(options.basedir, options.configdir),
protocols: appProtocols
});
appConfig = Object.assign(
{
basedir: configPath(options.basedir, options.configdir),
protocols: appProtocols
},
options.confit || {}
);
appFactory = confit(appConfig);
appFactory.create(function(err, appConf) {
if (err) {
deferred.reject(err);
Expand Down
20 changes: 20 additions & 0 deletions test/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,24 @@ test('settings', function (t) {

});

t.test('should accept confit options', function (t) {
var options, app, basedir;

process.env.krakenjs_test_settings_should_accept_confit_options = 'foo';

function onconfig(config, cb) {
var ignoredEnvVar = config.get('krakenjs_test_settings_should_accept_confit_options');
t.equal(ignoredEnvVar, undefined);
t.end();
}

app = express();
app.use(kraken({
basedir: path.join(__dirname, 'fixtures', 'settings'),
onconfig: onconfig,
confit: {
envignore: ['krakenjs_test_settings_should_accept_confit_options']
}
}));
});
});

0 comments on commit d05970d

Please sign in to comment.