MCPcopy
hub / github.com/Koenkk/zigbee2mqtt / enableDisableExtension

Method enableDisableExtension

lib/controller.ts:218–300  ·  view source on GitHub ↗
(enable: boolean, name: string)

Source from the content-addressed store, hash-verified

216 }
217
218 @bind async enableDisableExtension(enable: boolean, name: string): Promise<void> {
219 if (enable) {
220 let extension: Extension;
221
222 switch (name) {
223 case "Frontend": {
224 if (!settings.get().frontend.enabled) {
225 throw new Error("Tried to enable Frontend extension disabled in settings");
226 }
227
228 // this is not actually used, not tested either
229 /* v8 ignore start */
230 const {Frontend} = await import("./extension/frontend.js");
231
232 extension = new Frontend(...this.extensionArgs);
233
234 break;
235 /* v8 ignore stop */
236 }
237 case "HomeAssistant": {
238 if (!settings.get().homeassistant.enabled) {
239 throw new Error("Tried to enable HomeAssistant extension disabled in settings");
240 }
241
242 const {HomeAssistant} = await import("./extension/homeassistant.js");
243
244 extension = new HomeAssistant(...this.extensionArgs);
245
246 break;
247 }
248 default: {
249 throw new Error(
250 `Extension ${name} does not exist (should be added with 'addExtension') or is built-in that cannot be enabled at runtime`,
251 );
252 }
253 }
254
255 const existingExtension = this.getExtension(name);
256
257 if (existingExtension) {
258 await this.removeExtension(existingExtension);
259 }
260
261 this.extensions.add(extension);
262 } else {
263 switch (name) {
264 case "Frontend": {
265 if (settings.get().frontend.enabled) {
266 throw new Error("Tried to disable Frontend extension enabled in settings");
267 }
268
269 break;
270 }
271 case "HomeAssistant": {
272 if (settings.get().homeassistant.enabled) {
273 throw new Error("Tried to disable HomeAssistant extension enabled in settings");
274 }
275

Callers 6

bridgeOptionsMethod · 0.80
removeJSMethod · 0.80
loadJSMethod · 0.80
controller.test.tsFile · 0.80
frontend.test.tsFile · 0.80

Calls 4

getExtensionMethod · 0.95
removeExtensionMethod · 0.95
getMethod · 0.80
addMethod · 0.80

Tested by

no test coverage detected