adding extension api for terminal environment variables

Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
Jim Ehrismann committed 2022-02-01 17:14:34 -05:00
1 parent e8205a64b9
commit 1ac3d0a36b
4 files changed
+49

No files matched your search

+2
View File
@@ -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<string, any>, frameId?: number) {
return WindowManager.getInstance().navigateExtension(this.id, pageId, params, frameId);
@@ -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<string, string>;
}
@@ -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;
@@ -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<LensMainExtension[]>;
}
export const getShellEnvVars = ({ extensions }: Dependencies) => {
return computed(() => (
extensions.get()
.flatMap((extension) => extension.shellEnvVars)
));
};