@@ -22,9 +22,6 @@ global.version = require(`${__dirname}/../package.json`).version;
2222global . mmTestMode = process . env . mmTestMode === "true" ;
2323Log . log ( `Starting MagicMirror: v${ global . version } ` ) ;
2424
25- // Log system information.
26- Utils . logSystemInformation ( ) ;
27-
2825// global absolute root path
2926global . root_path = path . resolve ( `${ __dirname } /../` ) ;
3027
@@ -246,25 +243,47 @@ function App () {
246243 Log . log ( "All module helpers loaded." ) ;
247244 }
248245
246+ /**
247+ * Load remote config file of a module from moduleConfig string
248+ * @param {object } module object
249+ * @returns {object } module config found
250+ */
249251 function loadModuleConfig ( module ) {
250- var moduleFolder = path . resolve ( `${ __dirname } /../modules/` , module . module ) ;
252+ return new Promise ( function ( resolve ) {
253+ if ( module . moduleConfig . startsWith ( "http://" ) || module . moduleConfig . startsWith ( "https://" ) ) {
254+ Log . info ( `Loading config for ${ module . module } from ${ module . moduleConfig } ` ) ;
255+ fetch ( `${ module . moduleConfig } ` )
256+ . then ( ( response ) => response . text ( ) )
257+ . then ( ( txt ) => {
258+ const configFile = eval ( txt ) ;
259+ Log . debug ( "Config Result:" , configFile ) ;
260+ resolve ( configFile ) ;
261+ } )
262+ . catch ( ( e ) => {
263+ Log . error ( `Config loading error for module: ${ module . module } .` , e . message ) ;
264+ resolve ( null ) ;
265+ } ) ;
266+ } else {
267+ var moduleFolder = path . resolve ( `${ __dirname } /../modules/` , module . module ) ;
251268
252- if ( defaultModules . includes ( module . module ) ) {
253- moduleFolder = path . resolve ( `${ __dirname } /../modules/default/` , module . module ) ;
254- }
269+ if ( defaultModules . includes ( module . module ) ) {
270+ moduleFolder = path . resolve ( `${ __dirname } /../modules/default/` , module . module ) ;
271+ }
255272
256- const moduleConfigFile = `${ moduleFolder } /config/${ module . moduleConfig } ` ;
257- Log . info ( `Loading config for ${ module . module } in ${ moduleConfigFile } ` ) ;
258- try {
259- fs . accessSync ( moduleConfigFile , fs . R_OK ) ;
260- const configFile = eval ( require ( moduleConfigFile ) ) ;
261- Log . debug ( "Config Result:" , configFile ) ;
262- return configFile ;
263- } catch ( e ) {
264- Log . error ( `Config loading error for module: ${ module . module } .` , e . message ) ;
265- Log . error ( `Config: ${ moduleConfigFile } ` ) ;
266- return null ;
267- }
273+ const moduleConfigFile = `${ moduleFolder } /config/${ module . moduleConfig } ` ;
274+ Log . info ( `Loading config for ${ module . module } in ${ moduleConfigFile } ` ) ;
275+ try {
276+ fs . accessSync ( moduleConfigFile , fs . R_OK ) ;
277+ const configFile = eval ( require ( moduleConfigFile ) ) ;
278+ Log . debug ( "Config Result:" , configFile ) ;
279+ resolve ( configFile ) ;
280+ } catch ( e ) {
281+ Log . error ( `Config loading error for module: ${ module . module } .` , e . message ) ;
282+ Log . error ( `Config: ${ moduleConfigFile } ` ) ;
283+ resolve ( null ) ;
284+ }
285+ }
286+ } ) ;
268287 }
269288
270289 /**
@@ -298,6 +317,8 @@ function App () {
298317 * @returns {Promise<object> } the config used
299318 */
300319 this . start = async function ( ) {
320+ // Log system information.
321+ await Utils . logSystemInformation ( ) ;
301322 config = await loadConfig ( ) ;
302323 Log . setLogLevel ( config . logLevel ) ;
303324
0 commit comments