Skip to content

Commit bd21f85

Browse files
committed
Resolve driver from local projects
Fixes #318
1 parent 315ce80 commit bd21f85

File tree

1 file changed

+42
-22
lines changed

1 file changed

+42
-22
lines changed

lib/driver/index.js

+42-22
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ var log = internals.mod.log;
88
var tunnel = require('tunnel-ssh'),
99
Promise = require('bluebird'),
1010
SeederInterface = require('../interface/seederInterface.js'),
11-
MigratorInterface = require('../interface/migratorInterface.js');
11+
MigratorInterface = require('../interface/migratorInterface.js'),
12+
resolve = require( 'resolve' );
1213

1314
var ShadowProto = {
1415

@@ -44,6 +45,7 @@ exports.connect = function (config, intern, callback) {
4445
log.verbose('require:', config.driver.require);
4546
driver = require(config.driver.require);
4647

48+
_connect();
4749
}
4850
else {
4951

@@ -58,37 +60,54 @@ exports.connect = function (config, intern, callback) {
5860
break;
5961
}
6062

61-
try {
63+
req = 'db-migrate-' + config.driver;
64+
log.verbose('require:', req);
6265

63-
req = 'db-migrate-' + config.driver;
64-
log.verbose('require:', req);
66+
resolve(req, {
6567

66-
try {
68+
basedir: process.cwd()
69+
}, function (error, localModule) {
6770

68-
driver = require(req);
71+
try {
72+
if ( error ) {
73+
try {
74+
75+
driver = require(req);
76+
}
77+
catch (Exception) {
78+
79+
driver = require('../../../' + req);
80+
}
81+
}
82+
else {
83+
driver = require( localModule );
84+
}
6985
}
7086
catch (Exception) {
7187

72-
driver = require('../../../' + req);
88+
try {
89+
90+
//Fallback to internal drivers, while moving drivers to new repos
91+
req = './' + config.driver;
92+
log.verbose('require:', req);
93+
driver = require(req);
94+
}
95+
catch (exception) {
96+
97+
return callback( {
98+
stack: 'No such driver found, please try to install it via ' +
99+
'npm install db-migrate-' + config.driver + ' or ' +
100+
'npm install -g db-migrate-' + config.driver
101+
} );
102+
}
73103
}
74-
}
75-
catch (Exception) {
76104

77-
try {
105+
_connect();
106+
});
107+
}
78108

79-
//Fallback to internal drivers, while moving drivers to new repos
80-
req = './' + config.driver;
81-
log.verbose('require:', req);
82-
driver = require(req);
83-
}
84-
catch (Exception) {
85109

86-
return callback( { stack: 'No such driver found, please try to install it via ' +
87-
'npm install db-migrate-' + config.driver + ' or ' +
88-
'npm install -g db-migrate-' + config.driver } );
89-
}
90-
}
91-
}
110+
function _connect() {
92111

93112
log.verbose('connecting');
94113

@@ -136,4 +155,5 @@ exports.connect = function (config, intern, callback) {
136155
else {
137156
connect(config);
138157
}
158+
}
139159
};

0 commit comments

Comments
 (0)