@@ -58,6 +58,18 @@ function registerPluginLoader(plugins) {
58
58
} ;
59
59
}
60
60
61
+ var APIHooks = {
62
+ 'init:api:addfunction:hook' : function ( name , fn ) {
63
+
64
+ this [ name ] = fn ;
65
+ return ;
66
+ } ,
67
+ 'init:api:accessapi:hook' : function ( cb ) {
68
+
69
+ return cb ( this ) ;
70
+ }
71
+ } ;
72
+
61
73
function dbmigrate ( plugins , isModule , options , callback ) {
62
74
63
75
this . internals = {
@@ -153,6 +165,31 @@ dbmigrate.prototype = {
153
165
return true ;
154
166
} ,
155
167
168
+ registerAPIHook : function ( callback ) {
169
+
170
+ var plugins = this . internals . plugins ;
171
+ var self = this ;
172
+
173
+ return Promise . resolve ( Object . keys ( APIHooks ) )
174
+ . each ( function ( hook ) {
175
+
176
+ var plugin = plugins . hook ( hook ) ;
177
+ if ( ! plugin ) return ;
178
+
179
+ var APIHook = APIHooks [ hook ] . bind ( self ) ;
180
+
181
+ return Promise . resolve ( plugin )
182
+ . map ( function ( plugin ) {
183
+
184
+ return plugin [ hook ] ( ) ;
185
+ } )
186
+ . each ( function ( args ) {
187
+
188
+ return APIHook . apply ( self , args ) ;
189
+ } ) ;
190
+ } ) . asCallback ( callback ) ;
191
+ } ,
192
+
156
193
_internals : this . internals ,
157
194
158
195
/**
@@ -556,9 +593,24 @@ function setDefaultArgv(internals, isModule) {
556
593
. boolean ( 'ignore-completed-migrations' )
557
594
558
595
. describe ( 'log-level' , 'Set the log-level, for example sql|warn' )
559
- . string ( 'log-level' )
596
+ . string ( 'log-level' ) ;
597
+
598
+
599
+ var plugins = internals . plugins ;
600
+ var plugin = plugins . hook ( 'init:cli:config:hook' ) ;
601
+ if ( plugin ) {
560
602
561
- . argv ;
603
+ plugin . forEach ( function ( plugin ) {
604
+
605
+ var configs = plugin [ 'init:cli:config:hook' ] ( ) ;
606
+ if ( ! configs ) return ;
607
+
608
+ //hook not yet used, we look into migrating away from optimist first
609
+ return ;
610
+ } ) ;
611
+ }
612
+
613
+ internals . argv = internals . argv . argv ;
562
614
563
615
if ( internals . argv . version ) {
564
616
console . log ( internals . dbm . version ) ;
@@ -592,7 +644,7 @@ function setDefaultArgv(internals, isModule) {
592
644
}
593
645
594
646
function createMigrationDir ( dir , callback ) {
595
- fs . stat ( dir , function ( err , stat ) {
647
+ fs . stat ( dir , function ( err ) {
596
648
if ( err ) {
597
649
mkdirp ( dir , callback ) ;
598
650
} else {
@@ -1101,9 +1153,21 @@ function run(internals, config) {
1101
1153
break ;
1102
1154
1103
1155
default :
1104
- log . error ( 'Invalid Action: Must be [up|down|create|reset|seed|db].' ) ;
1105
- optimist . showHelp ( ) ;
1106
- process . exit ( 1 ) ;
1156
+ var plugins = internals . plugins ;
1157
+ var plugin = plugins . overwrite (
1158
+ 'run:default:action:' + action + ':overwrite'
1159
+ ) ;
1160
+ if ( plugin ) {
1161
+
1162
+ plugin [ 'run:default:action:' + action + ':overwrite' ]
1163
+ ( internals , config ) ;
1164
+ }
1165
+ else {
1166
+
1167
+ log . error ( 'Invalid Action: Must be [up|down|create|reset|seed|db].' ) ;
1168
+ optimist . showHelp ( ) ;
1169
+ process . exit ( 1 ) ;
1170
+ }
1107
1171
break ;
1108
1172
}
1109
1173
}
0 commit comments