From 1ac3d0a36b16783e4745e18552eb12f6a2f6a196 Mon Sep 17 00:00:00 2001 From: Jim Ehrismann Date: Tue, 1 Feb 2022 17:14:34 -0500 Subject: [PATCH] adding extension api for terminal environment variables Signed-off-by: Jim Ehrismann --- src/extensions/lens-main-extension.ts | 2 ++ .../env-var/env-var-registration.ts | 10 ++++++++++ .../env-var/env-var.injectable.ts | 19 +++++++++++++++++++ .../env-var/get-shell-env-vars.ts | 18 ++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 src/main/shell-session/env-var/env-var-registration.ts create mode 100644 src/main/shell-session/env-var/env-var.injectable.ts create mode 100644 src/main/shell-session/env-var/get-shell-env-vars.ts 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) + )); +};