From f3d009d2161e12d004faa99007343ac280ddf564 Mon Sep 17 00:00:00 2001 From: Jim Ehrismann Date: Thu, 3 Feb 2022 12:56:43 -0500 Subject: [PATCH] address some review comments Signed-off-by: Jim Ehrismann --- src/extensions/common-api/registrations.ts | 2 +- src/extensions/lens-main-extension.ts | 3 +-- .../shell-env-modifier/shell-env-modifier-registration.ts | 6 ++---- .../shell-env-modifier/shell-env-modifiers.ts | 3 ++- src/main/shell-session/shell-session.ts | 8 +++++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/extensions/common-api/registrations.ts b/src/extensions/common-api/registrations.ts index 03340e4519..8e787d5eaa 100644 --- a/src/extensions/common-api/registrations.ts +++ b/src/extensions/common-api/registrations.ts @@ -11,4 +11,4 @@ export type { PageRegistration, RegisteredPage, PageParams, PageComponentProps, export type { ClusterPageMenuRegistration, ClusterPageMenuComponents } from "../registries/page-menu-registry"; export type { ProtocolHandlerRegistration, RouteParams as ProtocolRouteParams, RouteHandler as ProtocolRouteHandler } from "../registries/protocol-handler"; export type { CustomCategoryViewProps, CustomCategoryViewComponents, CustomCategoryViewRegistration } from "../../renderer/components/+catalog/custom-views"; -export type { ShellEnvModifier, ShellEnvClusterData } from "../../main/shell-session/shell-env-modifier/shell-env-modifier-registration"; +export type { ShellEnvModifier, ShellEnvContext } from "../../main/shell-session/shell-env-modifier/shell-env-modifier-registration"; diff --git a/src/extensions/lens-main-extension.ts b/src/extensions/lens-main-extension.ts index f1cfe6ff19..3ff0da5192 100644 --- a/src/extensions/lens-main-extension.ts +++ b/src/extensions/lens-main-extension.ts @@ -11,13 +11,12 @@ import type { IObservableArray } from "mobx"; import type { MenuRegistration } from "../main/menu/menu-registration"; import type { TrayMenuRegistration } from "../main/tray/tray-menu-registration"; import type { ShellEnvModifier } from "../main/shell-session/shell-env-modifier/shell-env-modifier-registration"; -import { noop } from "../common/utils"; export class LensMainExtension extends LensExtension { appMenus: MenuRegistration[] = []; trayMenus: TrayMenuRegistration[] = []; - shellEnvModifier: ShellEnvModifier = noop; + shellEnvModifier?: ShellEnvModifier; async navigate(pageId?: string, params?: Record, frameId?: number) { return WindowManager.getInstance().navigateExtension(this.id, pageId, params, frameId); diff --git a/src/main/shell-session/shell-env-modifier/shell-env-modifier-registration.ts b/src/main/shell-session/shell-env-modifier/shell-env-modifier-registration.ts index 6ae16eb754..e7ae9b0a88 100644 --- a/src/main/shell-session/shell-env-modifier/shell-env-modifier-registration.ts +++ b/src/main/shell-session/shell-env-modifier/shell-env-modifier-registration.ts @@ -3,12 +3,10 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import type { noop } from "../../../common/utils"; - -export interface ShellEnvClusterData { +export interface ShellEnvContext { context: string; kubeconfigPath: string; id: string; } -export type ShellEnvModifier = ((cluster: ShellEnvClusterData, env: Record) => Record) | typeof noop; +export type ShellEnvModifier = (cluster: ShellEnvContext, env: Record) => Record; diff --git a/src/main/shell-session/shell-env-modifier/shell-env-modifiers.ts b/src/main/shell-session/shell-env-modifier/shell-env-modifiers.ts index 59f7598516..d29a5ccf5a 100644 --- a/src/main/shell-session/shell-env-modifier/shell-env-modifiers.ts +++ b/src/main/shell-session/shell-env-modifier/shell-env-modifiers.ts @@ -13,6 +13,7 @@ interface Dependencies { export const shellEnvModifiers = ({ extensions }: Dependencies) => { return computed(() => ( extensions.get() - .flatMap((extension) => extension.shellEnvModifier) + .map((extension) => extension.shellEnvModifier) + .filter(Boolean) )); }; diff --git a/src/main/shell-session/shell-session.ts b/src/main/shell-session/shell-session.ts index f8b893e90a..a5594e749a 100644 --- a/src/main/shell-session/shell-session.ts +++ b/src/main/shell-session/shell-session.ts @@ -312,7 +312,7 @@ export abstract class ShellSession { } protected async getShellEnv() { - let env = clearKubeconfigEnvVars(JSON.parse(JSON.stringify(await shellEnv()))); + const env = clearKubeconfigEnvVars(JSON.parse(JSON.stringify(await shellEnv()))); const pathStr = [...this.getPathEntries(), await this.kubectlBinDirP, process.env.PATH].join(path.delimiter); const shell = UserStore.getInstance().resolvedShell; @@ -361,9 +361,11 @@ export abstract class ShellSession { .filter(Boolean) .join(); - this.shellEnvModifiers.map(modifier => env = { ...env, ...modifier({ context: this.cluster.contextName, kubeconfigPath, id: this.cluster.id }, env) }); + const ctx = { context: this.cluster.contextName, kubeconfigPath, id: this.cluster.id }; - return env; + const modifiedEnv = this.shellEnvModifiers.reduce((env, modifier) => modifier(ctx, env), env); + + return modifiedEnv; } protected exit(code = WebSocketCloseEvent.NormalClosure) {