From 03123fb783701c44bc8258ff38c5f24189abda35 Mon Sep 17 00:00:00 2001 From: Daniel Welch Date: Fri, 11 May 2018 23:04:15 -0400 Subject: [PATCH] configure datapath with env variable --- index.js | 8 +++++++- lib/util/data.js | 14 ++++++++++++++ lib/util/logger.js | 3 ++- lib/util/settings.js | 3 ++- lib/zigbee.js | 3 ++- 5 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 lib/util/data.js diff --git a/index.js b/index.js index 6accf7ba6..aed34b902 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,10 @@ +const fs = require('fs'); const Controller = require('./lib/controller'); +const data = require('./lib/util/data'); + +if (process.env.ZIGBEE2MQTT_DATA) { + fs.copyFileSync('./data/configuration.yaml', data.joinPath('configuration.yaml')) +} const controller = new Controller(); controller.start(); @@ -7,4 +13,4 @@ process.on('SIGINT', handleQuit); function handleQuit() { controller.stop(() => process.exit()); -} \ No newline at end of file +} diff --git a/lib/util/data.js b/lib/util/data.js new file mode 100644 index 000000000..89c87d6f7 --- /dev/null +++ b/lib/util/data.js @@ -0,0 +1,14 @@ +const path = require('path'); + +function dataPath() { + if (process.env.ZIGBEE2MQTT_DATA) { + return process.env.ZIGBEE2MQTT_DATA; + } else { + return `${__dirname}/../../data`; + } +} + +module.exports = { + path: dataPath(), + joinPath: (file) => path.join(dataPath(), file) +} diff --git a/lib/util/logger.js b/lib/util/logger.js index 4cb094f0c..c1935fa04 100644 --- a/lib/util/logger.js +++ b/lib/util/logger.js @@ -1,9 +1,10 @@ const winston = require('winston'); +const data = require('./data'); const logger = new (winston.Logger)({ transports: [ new (winston.transports.File)({ - filename: 'data/log.txt', + filename: data.joinPath('log.txt'), json: false, level: winston.level.info, maxFiles: 3, diff --git a/lib/util/settings.js b/lib/util/settings.js index 2934a425c..01392b88f 100644 --- a/lib/util/settings.js +++ b/lib/util/settings.js @@ -1,6 +1,7 @@ const YAWN = require('yawn-yaml/cjs'); const fs = require('fs'); -const file = `${__dirname}/../../data/configuration.yaml`; +const data = require('./data'); +let file = data.joinPath('configuration.yaml'); let yawn = read(); function write() { diff --git a/lib/zigbee.js b/lib/zigbee.js index 530bc7ce6..011308a75 100644 --- a/lib/zigbee.js +++ b/lib/zigbee.js @@ -2,10 +2,11 @@ const ZShepherd = require('zigbee-shepherd'); const logger = require('./util/logger'); const settings = require('./util/settings'); const deviceMapping = require('./devices'); +const data = require('./util/data'); const shepherdSettings = { net: {panId: 0x1a62}, - dbPath: `${__dirname}/../data/database.db` + dbPath: data.joinPath('database.db') }; class Zigbee {