UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge.

133 lines (122 loc) 3.23 kB
/* eslint-disable unused-imports/no-unused-vars */ /** * This script "mocks" homebridge and is used to extract the plugin alias and type. */ const process = require('node:process') const EventEmitter = require('node:events').EventEmitter const path = require('node:path') let pluginAlias let pluginType const HomebridgeApiMock = { registerPlatform(pluginIdentifier, platformName, constructor) { pluginType = 'platform' if (typeof platformName === 'function') { constructor = platformName platformName = pluginIdentifier pluginAlias = platformName } else { pluginAlias = platformName } }, registerAccessory(pluginIdentifier, accessoryName, constructor) { pluginType = 'accessory' if (typeof accessoryName === 'function') { constructor = accessoryName accessoryName = pluginIdentifier pluginAlias = accessoryName } else { pluginAlias = accessoryName } }, version: 2.5, serverVersion: '1.2.3', on: () => { /** mock */ }, emit: () => { /** mock */ }, hap: { Characteristic: new class Characteristic extends EventEmitter { constructor() { super() return new Proxy(this, { get() { return { UUID: '0000003E-0000-1000-8000-0026BB765291', } }, }) } }(), Service: new class Service extends EventEmitter { constructor() { super() return new Proxy(this, { get() { return { UUID: '0000003E-0000-1000-8000-0026BB765291', } }, }) } }(), AccessoryLoader: {}, Accessory: {}, Bridge: {}, Categories: {}, Units: {}, uuid: { generate: () => { /** mock */ }, }, }, platformAccessory() { return { addService() { /** mock */ }, getService() { /** mock */ }, removeService() { /** mock */ }, context() { /** mock */ }, services() { /** mock */ }, } }, registerPlatformAccessories() { /** mock */ }, unregisterPlatformAccessories() { /** mock */ }, publishExternalAccessories() { /** mock */ }, updatePlatformAccessories() { /** mock */ }, user: { configPath() { return path.join(process.cwd(), 'config.json') }, storagePath() { return process.cwd() }, cachedAccessoryPath() { return path.join(process.cwd(), 'accessories') }, persistPath() { return path.join(process.cwd(), 'persist') }, }, } function main() { try { let pluginInitializer const pluginPath = process.env.UIX_EXTRACT_PLUGIN_PATH const pluginModules = require(pluginPath) if (typeof pluginModules === 'function') { pluginInitializer = pluginModules } else if (pluginModules && typeof pluginModules.default === 'function') { pluginInitializer = pluginModules.default } else { throw new Error(`Plugin ${pluginPath} does not export a initializer function from main.`) } pluginInitializer(HomebridgeApiMock) process.send({ pluginAlias, pluginType, }) process.exit() } catch (e) { process.exit(1) } } main() setTimeout(() => { process.exit(1) }, 2500)