@@ -8,10 +8,8 @@ const pjson = require('../package.json');
8
8
const fs = require ( 'fs' ) ;
9
9
const crypto = require ( 'crypto' ) ;
10
10
11
- const db = require ( './db.js' ) ;
12
- const MasterKey = require ( './models/masterkey.js' ) ;
11
+ let db , MasterKey , WalletKey ;
13
12
const signingTool = require ( './sign.js' ) ;
14
- const WalletKey = require ( './models/walletkey.js' ) ;
15
13
const utils = require ( './utils' ) ;
16
14
const bitcoinMessage = require ( 'bitcoinjs-message' ) ;
17
15
@@ -108,6 +106,15 @@ setVerificationCommand.addArgument(
108
106
}
109
107
) ;
110
108
109
+ const recoveryInfoCommand = subparsers . addParser ( 'recoveryInfo' , { addHelp : true } ) ;
110
+ recoveryInfoCommand . addArgument (
111
+ [ 'file' ] ,
112
+ {
113
+ action : 'store' ,
114
+ help : 'the path to the recovery file that bitgo provided'
115
+ }
116
+ ) ;
117
+
111
118
const generateKeysCommand = subparsers . addParser ( 'generate' , { addHelp : true } ) ;
112
119
generateKeysCommand . addArgument (
113
120
[ 'master' ] ,
@@ -368,11 +375,32 @@ const handleVerification = co(function *(args) {
368
375
}
369
376
} ) ;
370
377
378
+ const handleRecoveryInfo = co ( function * ( args ) {
379
+ const json = JSON . parse ( fs . readFileSync ( args . file ) ) ;
380
+ const pub = json . backupKey ;
381
+ const walletkey = yield WalletKey . findOne ( { pub } ) ;
382
+ const masterkey = yield MasterKey . findOne ( { pub : walletkey . masterKey } ) ;
383
+ json . masterkey = masterkey . pub ;
384
+ json . masterkeypath = masterkey . path ;
385
+ json . walletkeypath = walletkey . path ;
386
+ const filename = args . file . substring ( 0 , args . file . length - 5 ) + '-prepared.json' ;
387
+ console . log ( 'got info... writing file ' + filename ) ;
388
+ fs . writeFileSync ( filename , JSON . stringify ( json , null , 2 ) ) ;
389
+ console . log ( 'done.' ) ;
390
+ } ) ;
391
+
392
+ const requireDB = function ( ) {
393
+ MasterKey = require ( './models/masterkey.js' ) ;
394
+ WalletKey = require ( './models/walletkey.js' ) ;
395
+ db = require ( './db.js' ) ;
396
+ }
397
+
371
398
const run = co ( function * ( testArgs ) {
372
399
const args = parser . parseArgs ( testArgs ) ;
373
400
374
401
switch ( args . cmd ) {
375
402
case 'import' :
403
+ requireDB ( ) ;
376
404
yield handleImportKeys ( args ) ;
377
405
break ;
378
406
case 'sign' :
@@ -388,11 +416,17 @@ const run = co(function *(testArgs) {
388
416
handleGenerateHDSeed ( ) ;
389
417
break ;
390
418
case 'verification' :
419
+ requireDB ( ) ;
391
420
yield handleVerification ( args ) ;
392
421
break ;
422
+ case 'recoveryInfo' :
423
+ requireDB ( ) ;
424
+ yield handleRecoveryInfo ( args ) ;
393
425
}
394
426
395
- db . connection . close ( ) ;
427
+ if ( db && db . connection ) {
428
+ db . connection . close ( ) ;
429
+ }
396
430
} ) ;
397
431
398
432
// For admin script and unit testing of functions
0 commit comments