linagora-rse
Version:
96 lines (77 loc) • 2.13 kB
JavaScript
;
const request = require('request');
const ESConfiguration = require('esn-elasticsearch-configuration');
const path = require('path');
const q = require('q');
const fs = require('fs');
const httpClient = require('./httpClient');
const readdir = q.denodeify(fs.readdir);
module.exports = {
httpClient,
logInfo,
logError,
getDBOptions,
getESConfiguration,
exit,
runCommand,
loginAsUser,
loadMongooseModels
};
function log(level, ...message) {
console.log('[CLI]', level, ...message);
}
function logInfo(...message) {
log('INFO', ...message);
}
function logError(...message) {
log('ERROR', ...message);
}
function getDBOptions() {
const dbConfigFilePath = path.normalize(__dirname + '/../../config/db.json');
const dbConfig = fs.readFileSync(dbConfigFilePath, 'utf8');
return JSON.parse(dbConfig);
}
function getESConfiguration(host, port) {
return new ESConfiguration({ host: host || 'localhost', port: port || 9200 });
}
function exit(code) {
process.exit(code); // eslint-disable-line no-process-exit
}
function runCommand(name, command) {
return command().then(() => {
logInfo(`Command "${name}" terminated successfully`);
exit();
}, err => {
logError(`Command "${name}" returned an error: ${err}`);
exit(1);
});
}
function loginAsUser(baseUrl, email, password, done) {
request({
uri: baseUrl + '/api/login',
method: 'POST',
jar: true,
json: true,
body: {username: email, password: password, rememberme: false}
}, function(err, resp, body) {
if (err) {
return done(err);
}
if (resp.statusCode !== 200) {
return done(new Error('Can not auth user', body));
}
return done(null, body);
});
}
function loadMongooseModels() {
var ESN_ROOT = path.resolve(__dirname, '../../');
var MODELS_ROOT = path.resolve(ESN_ROOT, 'backend/core/db/mongo/models');
return readdir(MODELS_ROOT).then(function(files) {
files.forEach(function(filename) {
var file = path.resolve(MODELS_ROOT, filename);
if (fs.statSync(file).isFile()) {
require(file);
}
});
});
}