/* jslint node: true */ 'use strict'; const Config = require('./config.js').get; const ConfigCache = require('./config_cache.js'); const Events = require('./events.js'); // deps const paths = require('path'); const async = require('async'); exports.init = init; exports.getFullConfig = getFullConfig; function getConfigPath(filePath) { // |filePath| is assumed to be in the config path if it's only a file name if('.' === paths.dirname(filePath)) { filePath = paths.join(Config().paths.config, filePath); } return filePath; } function init(cb) { // pre-cache menu.hjson and prompt.hjson + establish events const changed = ( { fileName, fileRoot } ) => { const reCachedPath = paths.join(fileRoot, fileName); if(reCachedPath === getConfigPath(Config().general.menuFile)) { Events.emit(Events.getSystemEvents().MenusChanged); } else if(reCachedPath === getConfigPath(Config().general.promptFile)) { Events.emit(Events.getSystemEvents().PromptsChanged); } }; const config = Config(); async.series( [ function menu(callback) { return ConfigCache.getConfigWithOptions( { filePath : getConfigPath(config.general.menuFile), callback : changed, }, callback ); }, function prompt(callback) { return ConfigCache.getConfigWithOptions( { filePath : getConfigPath(config.general.promptFile), callback : changed, }, callback ); } ], err => { return cb(err); } ); } function getFullConfig(filePath, cb) { ConfigCache.getConfig(getConfigPath(filePath), (err, config) => { return cb(err, config); }); }