Skip to content

Commit a793f44

Browse files
committed
refactor(config): do not just interpret database.json
also check for either a passed config object OR a config file exists
1 parent 335dea1 commit a793f44

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

api.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -566,9 +566,7 @@ function loadConfig( config, internals ) {
566566
var out,
567567
currentEnv = internals.currentEnv || internals.argv.env;
568568

569-
if (process.env.DATABASE_URL) {
570-
out = config.loadUrl(process.env.DATABASE_URL, currentEnv);
571-
} else if (internals.configObject) {
569+
if (internals.configObject) {
572570
out = config.loadObject(internals.configObject, currentEnv);
573571
} else {
574572
out = config.loadFile(internals.argv.config, currentEnv, internals.plugins);

lib/commands/helper/assert.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
var assert = require('assert');
12

23
module.exports = function(err, callback) {
34
if (err) {

lib/config.js

+32-8
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@ exports.loadFile = function(fileName, currentEnv, plugins) {
4343
try {
4444
fs.statSync(fileName);
4545
} catch(e) {
46-
throw new Error('Could not find database config file \'' + fileName + '\'');
46+
if(!process.env.DATABASE_URL) {
47+
throw new Error('Could not find database config file \'' + fileName + '\'');
48+
}
49+
else {
50+
return exports.loadUrl(process.env.DATABASE_URL, currentEnv);
51+
}
4752
}
4853

4954
try {
@@ -77,7 +82,18 @@ exports.loadFile = function(fileName, currentEnv, plugins) {
7782
throw e;
7883
}
7984

80-
config = require(path.join(process.cwd(), fileName));
85+
try {
86+
config = require(path.join(process.cwd(), fileName));
87+
}
88+
catch(e) {
89+
90+
if(!process.env.DATABASE_URL) {
91+
throw e;
92+
}
93+
else {
94+
return exports.loadUrl(process.env.DATABASE_URL, currentEnv);
95+
}
96+
}
8197
}
8298

8399
return exports.loadObject(config, currentEnv);
@@ -106,13 +122,13 @@ function walkConfig(level) {
106122
}
107123

108124
exports.loadObject = function(_config, currentEnv) {
125+
109126
var out = new Config();
110127
// do not overwrite the users config
111128
var config = JSON.parse(JSON.stringify(_config));
112129

113130
for (var env in config) {
114131

115-
116132
if (config[env].ENV) {
117133
if(!process.env[config[env].ENV])
118134
log.verbose('Environment variable ' + config[env].ENV + ' is empty!');
@@ -127,12 +143,20 @@ exports.loadObject = function(_config, currentEnv) {
127143
out[env] = config[env];
128144
}
129145

130-
if(typeof(config[env].url) === 'string') {
146+
if(typeof(config[env].url) === 'string' || process.env.DATABASE_URL) {
131147

132-
config[env] = Object.assign(
133-
config[env],
134-
exports.loadUrl(config[env].url, env)[env]
135-
);
148+
if(typeof(config[env].url) !== 'string') {
149+
config[env] = Object.assign(
150+
config[env],
151+
parseDatabaseUrl(process.env.DATABASE_URL)
152+
);
153+
}
154+
else {
155+
config[env] = Object.assign(
156+
config[env],
157+
parseDatabaseUrl(config[env].url)
158+
);
159+
}
136160
delete config[env].url;
137161
}
138162
else if(config[env].url && config[env].url.value) {

0 commit comments

Comments
 (0)