diff --git a/src/extensions/lens-main-extension.ts b/src/extensions/lens-main-extension.ts index a7c545ef11..74d6e509c9 100644 --- a/src/extensions/lens-main-extension.ts +++ b/src/extensions/lens-main-extension.ts @@ -10,9 +10,11 @@ import type { CatalogEntity } from "../common/catalog"; import type { IObservableArray } from "mobx"; import type { MenuRegistration } from "../main/menu/menu-registration"; import type { TrayMenuRegistration } from "../main/tray/tray-menu-registration"; +import type { ShellEnvVarRegistration } from "../main/shell-session/env-var/env-var-registration"; export class LensMainExtension extends LensExtension { appMenus: MenuRegistration[] = []; trayMenus: TrayMenuRegistration[] = []; + shellEnvVars: ShellEnvVarRegistration[] = []; async navigate(pageId?: string, params?: Record, frameId?: number) { return WindowManager.getInstance().navigateExtension(this.id, pageId, params, frameId); diff --git a/src/main/shell-session/env-var/env-var-registration.ts b/src/main/shell-session/env-var/env-var-registration.ts new file mode 100644 index 0000000000..47cd265f5b --- /dev/null +++ b/src/main/shell-session/env-var/env-var-registration.ts @@ -0,0 +1,10 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +export interface ShellEnvVarRegistration { + title: string; + env: Record; +} + diff --git a/src/main/shell-session/env-var/env-var.injectable.ts b/src/main/shell-session/env-var/env-var.injectable.ts new file mode 100644 index 0000000000..d0f362eaca --- /dev/null +++ b/src/main/shell-session/env-var/env-var.injectable.ts @@ -0,0 +1,19 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; +import mainExtensionsInjectable from "../../../extensions/main-extensions.injectable"; +import { getShellEnvVars } from "./get-shell-env-vars"; + +const shellEnvVarInjectable = getInjectable({ + instantiate: (di) => + getShellEnvVars({ + extensions: di.inject(mainExtensionsInjectable), + }), + + lifecycle: lifecycleEnum.singleton, +}); + +export default shellEnvVarInjectable; diff --git a/src/main/shell-session/env-var/get-shell-env-vars.ts b/src/main/shell-session/env-var/get-shell-env-vars.ts new file mode 100644 index 0000000000..9845fa2a98 --- /dev/null +++ b/src/main/shell-session/env-var/get-shell-env-vars.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { computed, IComputedValue } from "mobx"; +import type { LensMainExtension } from "../../../extensions/lens-main-extension"; + +interface Dependencies { + extensions: IComputedValue; +} + +export const getShellEnvVars = ({ extensions }: Dependencies) => { + return computed(() => ( + extensions.get() + .flatMap((extension) => extension.shellEnvVars) + )); +};