From 96191a283604b82011d9f8a272e4fd1a5496f638 Mon Sep 17 00:00:00 2001 From: Koenkk Date: Fri, 15 Jun 2018 17:48:10 +0200 Subject: [PATCH] Update log version on startup --- .dockerignore | 1 - .gitignore | 1 - docker/Dockerfile.amd64 | 2 +- docker/Dockerfile.arm32v6 | 2 +- docker/Dockerfile.arm64v8 | 2 +- lib/controller.js | 99 +++++++++++++++++++++------------------ npm-shrinkwrap.json | 19 +++++--- package.json | 3 +- tag.sh | 3 -- 9 files changed, 71 insertions(+), 61 deletions(-) delete mode 100755 tag.sh diff --git a/.dockerignore b/.dockerignore index 122d23db6..ff2be3fa7 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,5 @@ node_modules .travis* -.git .gitignore *.png firmware diff --git a/.gitignore b/.gitignore index dc70a7efb..24eb4d122 100644 --- a/.gitignore +++ b/.gitignore @@ -61,4 +61,3 @@ typings/ data/database.db data/config.json data/log*.txt -data/hash.json \ No newline at end of file diff --git a/docker/Dockerfile.amd64 b/docker/Dockerfile.amd64 index 9c21dd636..8ee70a5e3 100644 --- a/docker/Dockerfile.amd64 +++ b/docker/Dockerfile.amd64 @@ -10,7 +10,7 @@ WORKDIR /app # Install dependencies RUN apk add --update --no-cache make gcc g++ python linux-headers udev nodejs git && \ npm install --unsafe-perm && \ - apk del make gcc g++ python linux-headers udev git + apk del make gcc g++ python linux-headers udev # Entrypoint ENTRYPOINT ["./run.sh"] diff --git a/docker/Dockerfile.arm32v6 b/docker/Dockerfile.arm32v6 index d1dc6795c..ee8a7fdc8 100644 --- a/docker/Dockerfile.arm32v6 +++ b/docker/Dockerfile.arm32v6 @@ -12,7 +12,7 @@ RUN [ "qemu-arm-static", "/bin/sh", "-c", \ cp /app/docker/run.sh /app && chmod +x /app/run.sh && \ apk add --update --no-cache make gcc g++ python linux-headers udev nodejs git && \ npm install --unsafe-perm && \ - apk del make gcc g++ python linux-headers udev git"] + apk del make gcc g++ python linux-headers udev"] # Entrypoint ENTRYPOINT ["./run.sh"] \ No newline at end of file diff --git a/docker/Dockerfile.arm64v8 b/docker/Dockerfile.arm64v8 index cc9a81280..d9e207ada 100644 --- a/docker/Dockerfile.arm64v8 +++ b/docker/Dockerfile.arm64v8 @@ -12,7 +12,7 @@ RUN [ "qemu-aarch64-static", "/bin/sh", "-c", \ cp /app/docker/run.sh /app && chmod +x /app/run.sh && \ apk add --update --no-cache make gcc g++ python linux-headers udev nodejs git && \ npm install --unsafe-perm && \ - apk del make gcc g++ python linux-headers udev git"] + apk del make gcc g++ python linux-headers udev"] # Entrypoint ENTRYPOINT ["./run.sh"] \ No newline at end of file diff --git a/lib/controller.js b/lib/controller.js index 3309efa39..fbc93f1d4 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -5,15 +5,7 @@ const settings = require('./util/settings'); const zigbeeShepherdConverters = require('zigbee-shepherd-converters'); const homeassistant = require('./homeassistant'); const objectAssignDeep = require(`object-assign-deep`); -const data = require('./util/data'); -const pjson = require('../package.json'); -let version = `${pjson.version}`; -try { - const hjson = require(data.joinPath('hash.json')).id; - version = version + `:${hjson}`; -} catch (error) { - logger.debug('Error parsing git hash version', error); -} + const mqttConfigRegex = new RegExp(`${settings.get().mqtt.base_topic}/bridge/config/\\w+`, 'g'); const mqttDeviceRegex = new RegExp(`${settings.get().mqtt.base_topic}/[\\w\\s\\d]+/set`, 'g'); const mqttDevicePrefixRegex = new RegExp(`${settings.get().mqtt.base_topic}/[\\w\\s\\d]+/[\\w\\s\\d]+/set`, 'g'); @@ -47,44 +39,45 @@ class Controller { } start() { - logger.info(`Starting ... ${version}`); - this.zigbee.start(this.handleZigbeeMessage, (error) => { - if (error) { - logger.error('Failed to start'); - } else { - // Log zigbee clients on startup and configure. - const devices = this.zigbee.getAllClients(); - logger.info(`Currently ${devices.length} devices are joined:`); - devices.forEach((device) => { - logger.info(this.getDeviceStartupLogMessage(device)); - this.configureDevice(device); - }); + this.startupLogVersion(() => { + this.zigbee.start(this.handleZigbeeMessage, (error) => { + if (error) { + logger.error('Failed to start'); + } else { + // Log zigbee clients on startup and configure. + const devices = this.zigbee.getAllClients(); + logger.info(`Currently ${devices.length} devices are joined:`); + devices.forEach((device) => { + logger.info(this.getDeviceStartupLogMessage(device)); + this.configureDevice(device); + }); - // Enable zigbee join. - if (settings.get().permit_join) { - logger.warn('`permit_join` set to `true` in configuration.yaml.'); - logger.warn('Allowing new devices to join.'); - logger.warn('Set `permit_join` to `false` once you joined all devices.'); - this.zigbee.permitJoin(true); + // Enable zigbee join. + if (settings.get().permit_join) { + logger.warn('`permit_join` set to `true` in configuration.yaml.'); + logger.warn('Allowing new devices to join.'); + logger.warn('Set `permit_join` to `false` once you joined all devices.'); + this.zigbee.permitJoin(true); + } + + // Start timers. + this.pollTimer(true); + this.softResetTimeout(true); + + // Connect to MQTT broker + const subscriptions = [ + `${settings.get().mqtt.base_topic}/+/set`, + `${settings.get().mqtt.base_topic}/+/+/set`, + `${settings.get().mqtt.base_topic}/bridge/config/+`, + ]; + + if (settings.get().homeassistant) { + subscriptions.push('hass/status'); + } + + this.mqtt.connect(this.handleMQTTMessage, subscriptions, () => this.handleMQTTConnected()); } - - // Start timers. - this.pollTimer(true); - this.softResetTimeout(true); - - // Connect to MQTT broker - const subscriptions = [ - `${settings.get().mqtt.base_topic}/+/set`, - `${settings.get().mqtt.base_topic}/+/+/set`, - `${settings.get().mqtt.base_topic}/bridge/config/+`, - ]; - - if (settings.get().homeassistant) { - subscriptions.push('hass/status'); - } - - this.mqtt.connect(this.handleMQTTMessage, subscriptions, () => this.handleMQTTConnected()); - } + }); }); } @@ -529,6 +522,22 @@ class Controller { this.mqtt.publish(deviceSettings.friendly_name, JSON.stringify(payload), options); } + + startupLogVersion(callback) { + const git = require('git-last-commit'); + const packageJSON = require('../package.json'); + const version = packageJSON.version; + + git.getLastCommit((err, commit) => { + if (err) { + logger.info(`Starting zigbee2mqtt version ${version}`); + } else { + logger.info(`Starting zigbee2mqtt version ${version} (commit ${commit.shortHash})`); + } + + callback(); + }); + } } module.exports = Controller; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 9f16ef58f..c00a71e60 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "acorn": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", - "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", + "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", "dev": true }, "acorn-jsx": { @@ -590,7 +590,7 @@ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.6.2", + "acorn": "5.7.1", "acorn-jsx": "3.0.1" } }, @@ -720,6 +720,11 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "git-last-commit": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/git-last-commit/-/git-last-commit-0.3.0.tgz", + "integrity": "sha1-zHcBrcYpt0f9OzOuXddTp0as6d8=" + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -2782,9 +2787,9 @@ } }, "zigbee-shepherd-converters": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/zigbee-shepherd-converters/-/zigbee-shepherd-converters-2.0.7.tgz", - "integrity": "sha512-yBLpHohmjw192Sp5rjX8pozLcjcnhy5AmVIob+CI0+AgGCHEpzGBjc9JvxLyH/N/XVOjMiyVK6wOb5B/Ua1xaw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/zigbee-shepherd-converters/-/zigbee-shepherd-converters-2.0.8.tgz", + "integrity": "sha512-UAtzGF5HZpcfvclmD1fxFkNke0EEOlXMO1VZB8z+FzkuexW6ILVG+7sbys4XIxcrmPuD6/yRGAPsWDqmLITrOg==", "requires": { "debounce": "1.1.0" }, diff --git a/package.json b/package.json index a334b8bea..f7b74e839 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "zigbee-shepherd-converters": "*", "json2yaml": "*", "zcl-packet": "git+https://github.com/Koenkk/zcl-packet.git", - "js-yaml": "*" + "js-yaml": "*", + "git-last-commit": "*" }, "devDependencies": { "eslint": "*", diff --git a/tag.sh b/tag.sh deleted file mode 100755 index fec26218b..000000000 --- a/tag.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -echo "{\"id\": \"$(git rev-parse --short HEAD)\"}" > data/hash.json -echo "Hash version '$(git rev-parse --short HEAD)' generated successfully" \ No newline at end of file