diff --git a/plejd/Configuration.js b/plejd/Configuration.js index 690c472..88a02b3 100644 --- a/plejd/Configuration.js +++ b/plejd/Configuration.js @@ -2,27 +2,52 @@ const fs = require('fs'); class Configuration { static _options = null; + static _addonInfo = null; static getOptions() { if (!Configuration._options) { - const rawData = fs.readFileSync('/data/options.json'); - const config = JSON.parse(rawData); - - const defaultRawData = fs.readFileSync('/plejd/config.json'); - const defaultConfig = JSON.parse(defaultRawData).options; - - Configuration._options = { ...defaultConfig, ...config }; - - // eslint-disable-next-line no-console - console.log('Config:', { - ...Configuration._options, - username: '---scrubbed---', - password: '---scrubbed---', - mqttPassword: '---scrubbed---', - }); + Configuration._hydrateCache(); } return Configuration._options; } + + static getAddonInfo() { + if (!Configuration._addonInfo) { + Configuration._hydrateCache(); + } + return Configuration._addonInfo; + } + + static _hydrateCache() { + const rawData = fs.readFileSync('/data/options.json'); + const config = JSON.parse(rawData); + + const defaultRawData = fs.readFileSync('/plejd/config.json'); + const defaultConfig = JSON.parse(defaultRawData); + + Configuration._options = { ...defaultConfig.options, ...config }; + Configuration._addonInfo = { + name: defaultConfig.name, + version: defaultConfig.version, + slug: defaultConfig.slug, + description: defaultConfig.description, + url: defaultConfig.url, + arch: defaultConfig.arch, + startup: defaultConfig.startup, + boot: defaultConfig.boot, + host_network: defaultConfig.host_network, + host_dbus: defaultConfig.host_dbus, + apparmor: defaultConfig.apparmor, + }; + + // eslint-disable-next-line no-console + console.log('Config:', { + ...Configuration._options, + username: '---scrubbed---', + password: '---scrubbed---', + mqttPassword: '---scrubbed---', + }); + } } module.exports = Configuration; diff --git a/plejd/main.js b/plejd/main.js index fa54005..ce03914 100644 --- a/plejd/main.js +++ b/plejd/main.js @@ -1,13 +1,17 @@ +const Configuration = require('./Configuration'); const Logger = require('./Logger'); const PlejdAddon = require('./PlejdAddon'); -const logger = Logger.getLogger('plejd-main'); - -const version = '0.5.1'; - async function main() { try { - logger.info(`Starting Plejd add-on v. ${version}`); + // eslint-disable-next-line no-console + console.log('Starting Plejd addon and reading configuration...'); + + const addonInfo = Configuration.getAddonInfo(); + const logger = Logger.getLogger('plejd-main'); + + logger.info(`Plejd add-on, version ${addonInfo.version}`); + logger.verbose(`Addon info: ${JSON.stringify(addonInfo)}`); const addon = new PlejdAddon(); @@ -15,7 +19,8 @@ async function main() { logger.info('main() finished'); } catch (err) { - logger.error('Catastrophic error. Resetting entire addon in 1 minute', err); + // eslint-disable-next-line no-console + console.log('Catastrophic error. Resetting entire addon in 1 minute', err); setTimeout(() => main(), 60000); } }