UNPKG

node-red-contrib-home-assistant-websocket

Version:
103 lines (102 loc) 3.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getEnvironmentData = getEnvironmentData; const axios_1 = __importDefault(require("axios")); const promises_1 = __importDefault(require("fs/promises")); const os_1 = __importDefault(require("os")); const globals_1 = require("../globals"); const homeAssistant_1 = require("../homeAssistant"); const version_1 = __importDefault(require("../version")); let addonVersionCached; let isDockerCached; async function hasDockerEnv() { try { await promises_1.default.stat('/.dockerenv'); return true; } catch (_a) { return false; } } async function hasDockerCGroup() { try { return (await promises_1.default.readFile('/proc/self/cgroup', 'utf8')).includes('docker'); } catch (_a) { return false; } } async function isRunningInDocker() { isDockerCached !== null && isDockerCached !== void 0 ? isDockerCached : (isDockerCached = (await hasDockerEnv()) || (await hasDockerCGroup())); return isDockerCached; } function getHomeAssistantServers() { const servers = []; for (const [id, ha] of homeAssistant_1.homeAssistantConnections) { const server = { serverId: id, version: ha.version, integrationVersion: ha.integrationVersion, }; if (!ha.isConnected) { server.version = 'unknown'; } if (!ha.isHomeAssistantRunning) { server.integrationVersion = 'unknown'; } servers.push(server); } return servers; } function getHomeAssistantVersionText() { const servers = getHomeAssistantServers(); if (servers.length === 0) { return 'No Home Assistant server configured\n'; } if (servers.length === 1) { const server = servers[0]; return (`Home Assistant version: ${server.version}\n` + `Companion version: ${server.integrationVersion}\n`); } let content = `Home Assistant instances: ${servers.length}\n`; for (const server of servers) { content += `Server: ${server.serverId}\n` + `Home Assistant version: ${server.version}\n` + `Companion version: ${server.integrationVersion}\n`; } return content; } async function getAddonVersion() { if (addonVersionCached || !process.env.SUPERVISOR_TOKEN) return addonVersionCached; try { const response = await axios_1.default.get('http://supervisor/addons/self/info', { headers: { Authorization: `Bearer ${process.env.SUPERVISOR_TOKEN}`, }, }); addonVersionCached = response.data.data.version; return addonVersionCached; } catch (err) { return 'error fetching version'; } } async function getEnvironmentData() { var _a; const content = `Version: ${version_1.default}\n` + `\n` + `${getHomeAssistantVersionText()}` + `\n` + `Node-RED version: ${globals_1.RED.version()}\n` + `Docker: ${(await isRunningInDocker()) ? 'yes' : 'no'}\n` + `Add-on: ${(_a = (await getAddonVersion())) !== null && _a !== void 0 ? _a : 'no'}\n` + `\n` + `Node.js version: ${process.version} ${process.arch} ${process.platform}\n` + `OS: ${os_1.default.type()} ${os_1.default.release()} ${os_1.default.arch()}\n`; return content; }