/* jslint node: true */ /* eslint-disable no-console */ 'use strict'; const resolvePath = require('../misc_util.js').resolvePath; const config = require('../../core/config.js'); const db = require('../../core/database.js'); const _ = require('lodash'); const async = require('async'); exports.printUsageAndSetExitCode = printUsageAndSetExitCode; exports.getDefaultConfigPath = getDefaultConfigPath; exports.getConfigPath = getConfigPath; exports.initConfigAndDatabases = initConfigAndDatabases; exports.getAreaAndStorage = getAreaAndStorage; const exitCodes = exports.ExitCodes = { SUCCESS : 0, ERROR : -1, BAD_COMMAND : -2, BAD_ARGS : -3, }; const argv = exports.argv = require('minimist')(process.argv.slice(2)); function printUsageAndSetExitCode(errMsg, exitCode) { if(_.isUndefined(exitCode)) { exitCode = exitCodes.ERROR; } process.exitCode = exitCode; if(errMsg) { console.error(errMsg); } } function getDefaultConfigPath() { return resolvePath('~/.config/enigma-bbs/config.hjson'); } function getConfigPath() { return argv.config ? argv.config : config.getDefaultPath(); } function initConfig(cb) { const configPath = getConfigPath(); config.init(configPath, { keepWsc : true }, cb); } function initConfigAndDatabases(cb) { async.series( [ function init(callback) { initConfig(callback); }, function initDb(callback) { db.initializeDatabases(callback); }, ], err => { return cb(err); } ); } function getAreaAndStorage(tags) { return tags.map(tag => { const parts = tag.toString().split('@'); const entry = { areaTag : parts[0], }; entry.pattern = entry.areaTag; // handy if(parts[1]) { entry.storageTag = parts[1]; } return entry; }); }