-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathinit.js
99 lines (94 loc) · 2.69 KB
/
init.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
'use strict'
/**
* init.js
* Initialisers
******************************/
const _ = require('lodash')
const moment = require('moment')
const fs = require('fs-extra')
const google = require('googleapis')
const logger = require('./script/logger')
const Db = require('./src/Db')
exports.main = function () {
// Decrypt db (the Vault) and get ready for use
// open mdb
logger.verbose(`PROMISE: Main initialisation`)
return new Promise(function (resolve, reject) {
global.mdb = new Db(global.paths.mdb)
global.mdb.get('creds', function (err, json) {
if (err) {
if (err.notFound) {
logger.error(`ERROR: key creds NOT FOUND `)
global.creds = {}
reject(err)
} else {
// I/O or other error, pass it up the callback
logger.error(`ERROR: mdb.get('creds') FAILED`)
reject(err)
}
} else {
logger.info(`SUCCESS: creds FOUND ${json.substr(0, 20)}`)
global.creds = JSON.parse(json)
setTimeout(function () {
logger.verbose(`resolve global.creds called`)
resolve()
}, 0)
}
})
fs.ensureDir(global.paths.home, function (err) {
if (err) reject(err)
resolve()
})
})
}
exports.setup = function () {
logger.verbose(`PROMISE: Setup initialisation`)
return new Promise(function (resolve, reject) {
global.mdb = new Db(global.paths.mdb)
fs.ensureDir(global.paths.home, function (err) {
if (err) reject(err)
resolve()
})
})
}
exports.drive = function (gAuth, notInstOfAuth) {
// store auth token in mdb
logger.verbose(`init.drive: `)
// logger.verbose(require('util').inspect(gAuth, { depth: null }))
return new Promise(function (resolve, reject) {
if (notInstOfAuth) {
const initedGAuth = new google.auth.OAuth2(gAuth.clientId_, gAuth.clientSecret_, gAuth.redirectUri_)
initedGAuth.setCredentials(gAuth.credentials)
global.drive = google.drive({
version: 'v3',
auth: initedGAuth
})
resolve()
} else {
global.drive = google.drive({
version: 'v3',
auth: gAuth.oauth2Client
})
resolve()
}
})
}
exports.stats = function () {
return new Promise(function (resolve, reject) {
global.stats.startTime = moment().format()
global.stats.time = moment()
resolve()
})
}
exports.syncGlobals = function (trees) {
return new Promise(function (resolve, reject) {
logger.verbose(`Saving file tree (fBtree) to global.state.toGet`)
global.state = {}
global.state.toGet = _.flattenDeep(trees[0])
global.state.toCrypt = []
global.state.toUpdate = []
global.state.recents = []
global.state.rfs = trees[1]
resolve()
})
}