mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
chore: Switch buildVersion to use new Initializable
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
72a01cdc17
commit
1b96a94c14
@ -3,27 +3,13 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { getInjectionToken } from "@ogre-tools/injectable";
|
|
||||||
import { SemVer } from "semver";
|
import { SemVer } from "semver";
|
||||||
import type { InitializableState } from "../initializable-state/create";
|
import { buildVersionInitializable } from "../../features/vars/build-version/common/token";
|
||||||
import { createInitializableState } from "../initializable-state/create";
|
import { createInitializableState } from "../initializable-state/create";
|
||||||
import type { RequestChannel } from "@k8slens/messaging";
|
|
||||||
|
|
||||||
export const buildVersionInjectionToken = getInjectionToken<InitializableState<string>>({
|
|
||||||
id: "build-version-token",
|
|
||||||
});
|
|
||||||
|
|
||||||
export const buildVersionChannel: RequestChannel<void, string> = {
|
|
||||||
id: "build-version",
|
|
||||||
};
|
|
||||||
|
|
||||||
const buildSemanticVersionInjectable = createInitializableState({
|
const buildSemanticVersionInjectable = createInitializableState({
|
||||||
id: "build-semantic-version",
|
id: "build-semantic-version",
|
||||||
init: (di) => {
|
init: (di) => new SemVer(di.inject(buildVersionInitializable.stateToken)),
|
||||||
const buildVersion = di.inject(buildVersionInjectionToken);
|
|
||||||
|
|
||||||
return new SemVer(buildVersion.get());
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export default buildSemanticVersionInjectable;
|
export default buildSemanticVersionInjectable;
|
||||||
|
|||||||
@ -10,11 +10,11 @@ import isSnapPackageInjectable from "../../common/vars/is-snap-package.injectabl
|
|||||||
import isWindowsInjectable from "../../common/vars/is-windows.injectable";
|
import isWindowsInjectable from "../../common/vars/is-windows.injectable";
|
||||||
import { getLegacyGlobalDiForExtensionApi } from "../as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
import { getLegacyGlobalDiForExtensionApi } from "../as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
||||||
import { issuesTrackerUrl } from "../../common/vars";
|
import { issuesTrackerUrl } from "../../common/vars";
|
||||||
import { buildVersionInjectionToken } from "../../common/vars/build-semantic-version.injectable";
|
|
||||||
import { asLegacyGlobalForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api";
|
import { asLegacyGlobalForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api";
|
||||||
import enabledExtensionsInjectable from "../../features/extensions/enabled/common/enabled-extensions.injectable";
|
import enabledExtensionsInjectable from "../../features/extensions/enabled/common/enabled-extensions.injectable";
|
||||||
import userPreferencesStateInjectable from "../../features/user-preferences/common/state.injectable";
|
import userPreferencesStateInjectable from "../../features/user-preferences/common/state.injectable";
|
||||||
import { lensBuildEnvironmentInjectionToken } from "@k8slens/application";
|
import { lensBuildEnvironmentInjectionToken } from "@k8slens/application";
|
||||||
|
import { buildVersionInitializable } from "../../features/vars/build-version/common/token";
|
||||||
|
|
||||||
const userStore = asLegacyGlobalForExtensionApi(userPreferencesStateInjectable);
|
const userStore = asLegacyGlobalForExtensionApi(userPreferencesStateInjectable);
|
||||||
const enabledExtensions = asLegacyGlobalForExtensionApi(enabledExtensionsInjectable);
|
const enabledExtensions = asLegacyGlobalForExtensionApi(enabledExtensionsInjectable);
|
||||||
@ -27,7 +27,7 @@ export const App = {
|
|||||||
get version() {
|
get version() {
|
||||||
const di = getLegacyGlobalDiForExtensionApi();
|
const di = getLegacyGlobalDiForExtensionApi();
|
||||||
|
|
||||||
return di.inject(buildVersionInjectionToken).get();
|
return di.inject(buildVersionInitializable.stateToken);
|
||||||
},
|
},
|
||||||
get appName() {
|
get appName() {
|
||||||
const di = getLegacyGlobalDiForExtensionApi();
|
const di = getLegacyGlobalDiForExtensionApi();
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import openLinkInBrowserInjectable from "../../common/utils/open-link-in-browser.injectable";
|
import openLinkInBrowserInjectable from "../../common/utils/open-link-in-browser.injectable";
|
||||||
import buildVersionInjectable from "../../main/vars/build-version/build-version.injectable";
|
import { buildVersionInitializable } from "../../features/vars/build-version/common/token";
|
||||||
import { asLegacyGlobalFunctionForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-function-for-extension-api";
|
import { asLegacyGlobalFunctionForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-function-for-extension-api";
|
||||||
import { getLegacyGlobalDiForExtensionApi } from "../as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
import { getLegacyGlobalDiForExtensionApi } from "../as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
||||||
|
|
||||||
@ -60,5 +60,5 @@ export const openBrowser = asLegacyGlobalFunctionForExtensionApi(openLinkInBrows
|
|||||||
export const getAppVersion = () => {
|
export const getAppVersion = () => {
|
||||||
const di = getLegacyGlobalDiForExtensionApi();
|
const di = getLegacyGlobalDiForExtensionApi();
|
||||||
|
|
||||||
return di.inject(buildVersionInjectable).get();
|
return di.inject(buildVersionInitializable.stateToken);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -7,16 +7,16 @@ import showMessagePopupInjectable from "../../../../../../main/electron-app/feat
|
|||||||
import isWindowsInjectable from "../../../../../../common/vars/is-windows.injectable";
|
import isWindowsInjectable from "../../../../../../common/vars/is-windows.injectable";
|
||||||
import appNameInjectable from "../../../../../../common/vars/app-name.injectable";
|
import appNameInjectable from "../../../../../../common/vars/app-name.injectable";
|
||||||
import productNameInjectable from "../../../../../../common/vars/product-name.injectable";
|
import productNameInjectable from "../../../../../../common/vars/product-name.injectable";
|
||||||
import buildVersionInjectable from "../../../../../../main/vars/build-version/build-version.injectable";
|
|
||||||
import extensionApiVersionInjectable from "../../../../../../common/vars/extension-api-version.injectable";
|
import extensionApiVersionInjectable from "../../../../../../common/vars/extension-api-version.injectable";
|
||||||
import applicationCopyrightInjectable from "../../../../../../common/vars/application-copyright.injectable";
|
import applicationCopyrightInjectable from "../../../../../../common/vars/application-copyright.injectable";
|
||||||
import specificVersionsInjectable from "./about-bundled-extensions.injectable";
|
import specificVersionsInjectable from "./about-bundled-extensions.injectable";
|
||||||
|
import { buildVersionInitializable } from "../../../../../vars/build-version/common/token";
|
||||||
|
|
||||||
const showAboutInjectable = getInjectable({
|
const showAboutInjectable = getInjectable({
|
||||||
id: "show-about",
|
id: "show-about",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const buildVersion = di.inject(buildVersionInjectable);
|
const buildVersion = di.inject(buildVersionInitializable.stateToken);
|
||||||
const extensionApiVersion = di.inject(extensionApiVersionInjectable);
|
const extensionApiVersion = di.inject(extensionApiVersionInjectable);
|
||||||
const showMessagePopup = di.inject(showMessagePopupInjectable);
|
const showMessagePopup = di.inject(showMessagePopupInjectable);
|
||||||
const isWindows = di.inject(isWindowsInjectable);
|
const isWindows = di.inject(isWindowsInjectable);
|
||||||
@ -27,7 +27,7 @@ const showAboutInjectable = getInjectable({
|
|||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
const appInfo = [
|
const appInfo = [
|
||||||
`${appName}: ${buildVersion.get()}`,
|
`${appName}: ${buildVersion}`,
|
||||||
`Extension API: ${extensionApiVersion}`,
|
`Extension API: ${extensionApiVersion}`,
|
||||||
`Electron: ${process.versions.electron}`,
|
`Electron: ${process.versions.electron}`,
|
||||||
`Chrome: ${process.versions.chrome}`,
|
`Chrome: ${process.versions.chrome}`,
|
||||||
|
|||||||
@ -19,7 +19,7 @@ import quitAndInstallUpdateInjectable from "./main/quit-and-install-update.injec
|
|||||||
import periodicalCheckForUpdatesInjectable from "./child-features/periodical-checking-of-updates/main/periodical-check-for-updates.injectable";
|
import periodicalCheckForUpdatesInjectable from "./child-features/periodical-checking-of-updates/main/periodical-check-for-updates.injectable";
|
||||||
import { advanceFakeTime, testUsingFakeTime } from "../../test-utils/use-fake-time";
|
import { advanceFakeTime, testUsingFakeTime } from "../../test-utils/use-fake-time";
|
||||||
import emitEventInjectable from "../../common/app-event-bus/emit-event.injectable";
|
import emitEventInjectable from "../../common/app-event-bus/emit-event.injectable";
|
||||||
import getBuildVersionInjectable from "../../main/vars/build-version/get-build-version.injectable";
|
import getBuildVersionInjectable from "../../main/electron-app/features/get-build-version.injectable";
|
||||||
|
|
||||||
describe("analytics for installing update", () => {
|
describe("analytics for installing update", () => {
|
||||||
let builder: ApplicationBuilder;
|
let builder: ApplicationBuilder;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import showInfoNotificationInjectable from "../../../../renderer/components/noti
|
|||||||
import processCheckingForUpdatesInjectable from "../../main/process-checking-for-updates.injectable";
|
import processCheckingForUpdatesInjectable from "../../main/process-checking-for-updates.injectable";
|
||||||
import type { DiContainer } from "@ogre-tools/injectable";
|
import type { DiContainer } from "@ogre-tools/injectable";
|
||||||
import getBuildVersionInjectable
|
import getBuildVersionInjectable
|
||||||
from "../../../../main/vars/build-version/get-build-version.injectable";
|
from "../../../../main/electron-app/features/get-build-version.injectable";
|
||||||
|
|
||||||
describe("selection of update stability", () => {
|
describe("selection of update stability", () => {
|
||||||
let builder: ApplicationBuilder;
|
let builder: ApplicationBuilder;
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import processCheckingForUpdatesInjectable from "./main/process-checking-for-upd
|
|||||||
import selectedUpdateChannelInjectable from "./common/selected-update-channel/selected-update-channel.injectable";
|
import selectedUpdateChannelInjectable from "./common/selected-update-channel/selected-update-channel.injectable";
|
||||||
import type { DiContainer } from "@ogre-tools/injectable";
|
import type { DiContainer } from "@ogre-tools/injectable";
|
||||||
import { updateChannels } from "./common/update-channels";
|
import { updateChannels } from "./common/update-channels";
|
||||||
import getBuildVersionInjectable from "../../main/vars/build-version/get-build-version.injectable";
|
import getBuildVersionInjectable from "../../main/electron-app/features/get-build-version.injectable";
|
||||||
|
|
||||||
describe("downgrading version update", () => {
|
describe("downgrading version update", () => {
|
||||||
let applicationBuilder: ApplicationBuilder;
|
let applicationBuilder: ApplicationBuilder;
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import { afterApplicationIsLoadedInjectionToken } from "@k8slens/application";
|
import { afterApplicationIsLoadedInjectionToken } from "@k8slens/application";
|
||||||
import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable";
|
import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable";
|
||||||
import { getCurrentDateTime } from "../../../common/utils/date/get-current-date-time";
|
import { getCurrentDateTime } from "../../../common/utils/date/get-current-date-time";
|
||||||
import buildVersionInjectable from "../../../main/vars/build-version/build-version.injectable";
|
import { buildVersionInitializable } from "../../vars/build-version/common/token";
|
||||||
|
|
||||||
const emitCurrentVersionToAnalyticsInjectable = getInjectable({
|
const emitCurrentVersionToAnalyticsInjectable = getInjectable({
|
||||||
id: "emit-current-version-to-analytics",
|
id: "emit-current-version-to-analytics",
|
||||||
@ -14,14 +14,14 @@ const emitCurrentVersionToAnalyticsInjectable = getInjectable({
|
|||||||
instantiate: (di) => ({
|
instantiate: (di) => ({
|
||||||
run: () => {
|
run: () => {
|
||||||
const emitAppEvent = di.inject(emitAppEventInjectable);
|
const emitAppEvent = di.inject(emitAppEventInjectable);
|
||||||
const buildVersion = di.inject(buildVersionInjectable);
|
const buildVersion = di.inject(buildVersionInitializable.stateToken);
|
||||||
|
|
||||||
emitAppEvent({
|
emitAppEvent({
|
||||||
name: "app",
|
name: "app",
|
||||||
action: "current-version",
|
action: "current-version",
|
||||||
|
|
||||||
params: {
|
params: {
|
||||||
version: buildVersion.get(),
|
version: buildVersion,
|
||||||
currentDateTime: getCurrentDateTime(),
|
currentDateTime: getCurrentDateTime(),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@ -0,0 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { RequestChannel } from "@k8slens/messaging";
|
||||||
|
import { getInitializable } from "../../../../common/initializable-state/create";
|
||||||
|
|
||||||
|
export const buildVersionInitializable = getInitializable<string>("build-version");
|
||||||
|
|
||||||
|
export const buildVersionChannel: RequestChannel<void, string> = {
|
||||||
|
id: "build-version",
|
||||||
|
};
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application";
|
||||||
|
import { getInjectablesForInitializable } from "../../../../common/initializable-state/create";
|
||||||
|
import getBuildVersionInjectable from "../../../../main/electron-app/features/get-build-version.injectable";
|
||||||
|
import { buildVersionInitializable } from "../common/token";
|
||||||
|
|
||||||
|
export const {
|
||||||
|
stateInjectable: buildVersionStateInjectable,
|
||||||
|
initializationInjectable: buildVersionInitializationInjectable,
|
||||||
|
} = getInjectablesForInitializable({
|
||||||
|
token: buildVersionInitializable,
|
||||||
|
phase: beforeApplicationIsLoadingInjectionToken,
|
||||||
|
init: (di) => {
|
||||||
|
const getBuildVersion = di.inject(getBuildVersionInjectable);
|
||||||
|
|
||||||
|
return getBuildVersion();
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -2,18 +2,13 @@
|
|||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import { buildVersionChannel } from "../../common/vars/build-semantic-version.injectable";
|
|
||||||
import { getRequestChannelListenerInjectable } from "@k8slens/messaging";
|
import { getRequestChannelListenerInjectable } from "@k8slens/messaging";
|
||||||
import buildVersionInjectable from "../vars/build-version/build-version.injectable";
|
import { buildVersionChannel, buildVersionInitializable } from "../common/token";
|
||||||
|
|
||||||
const buildVersionChannelListenerInjectable = getRequestChannelListenerInjectable({
|
const buildVersionChannelListenerInjectable = getRequestChannelListenerInjectable({
|
||||||
id: "build-version-channel-listener",
|
id: "build-version-channel-listener",
|
||||||
channel: buildVersionChannel,
|
channel: buildVersionChannel,
|
||||||
getHandler: (di) => {
|
getHandler: (di) => () => di.inject(buildVersionInitializable.stateToken),
|
||||||
const buildVersion = di.inject(buildVersionInjectable);
|
|
||||||
|
|
||||||
return () => buildVersion.get();
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export default buildVersionChannelListenerInjectable;
|
export default buildVersionChannelListenerInjectable;
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { requestFromChannelInjectionToken } from "@k8slens/messaging";
|
||||||
|
import { getInjectablesForInitializable } from "../../../../common/initializable-state/create";
|
||||||
|
import { beforeFrameStartsSecondInjectionToken } from "../../../../renderer/before-frame-starts/tokens";
|
||||||
|
import { buildVersionChannel, buildVersionInitializable } from "../common/token";
|
||||||
|
|
||||||
|
export const {
|
||||||
|
stateInjectable: buildVersionStateInjectable,
|
||||||
|
initializationInjectable: buildVersionInitializationInjectable,
|
||||||
|
} = getInjectablesForInitializable({
|
||||||
|
token: buildVersionInitializable,
|
||||||
|
phase: beforeFrameStartsSecondInjectionToken,
|
||||||
|
init: async (di) => {
|
||||||
|
const requestFromChannel = di.inject(requestFromChannelInjectionToken);
|
||||||
|
|
||||||
|
return requestFromChannel(buildVersionChannel);
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -3,7 +3,7 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import electronAppInjectable from "../../electron-app/electron-app.injectable";
|
import electronAppInjectable from "../electron-app.injectable";
|
||||||
|
|
||||||
const getBuildVersionInjectable = getInjectable({
|
const getBuildVersionInjectable = getInjectable({
|
||||||
id: "get-build-version",
|
id: "get-build-version",
|
||||||
@ -6,18 +6,20 @@ import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application";
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import loggerInjectable from "../../common/logger.injectable";
|
import loggerInjectable from "../../common/logger.injectable";
|
||||||
import appNameInjectable from "../../common/vars/app-name.injectable";
|
import appNameInjectable from "../../common/vars/app-name.injectable";
|
||||||
import buildVersionInjectable from "../vars/build-version/build-version.injectable";
|
import { buildVersionInitializable } from "../../features/vars/build-version/common/token";
|
||||||
|
import { buildVersionInitializationInjectable } from "../../features/vars/build-version/main/init.injectable";
|
||||||
|
|
||||||
const logVersionOnStartInjectable = getInjectable({
|
const logVersionOnStartInjectable = getInjectable({
|
||||||
id: "log-version-on-start",
|
id: "log-version-on-start",
|
||||||
instantiate: (di) => ({
|
instantiate: (di) => ({
|
||||||
run: () => {
|
run: () => {
|
||||||
const logger = di.inject(loggerInjectable);
|
const logger = di.inject(loggerInjectable);
|
||||||
const buildVersion = di.inject(buildVersionInjectable).get();
|
const buildVersion = di.inject(buildVersionInitializable.stateToken);
|
||||||
const appName = di.inject(appNameInjectable);
|
const appName = di.inject(appNameInjectable);
|
||||||
|
|
||||||
logger.info(`Starting v${buildVersion} of ${appName}...`);
|
logger.info(`Starting v${buildVersion} of ${appName}...`);
|
||||||
},
|
},
|
||||||
|
runAfter: buildVersionInitializationInjectable,
|
||||||
}),
|
}),
|
||||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -4,23 +4,19 @@
|
|||||||
*/
|
*/
|
||||||
import { getRouteInjectable } from "../../router/router.injectable";
|
import { getRouteInjectable } from "../../router/router.injectable";
|
||||||
import { route } from "../../router/route";
|
import { route } from "../../router/route";
|
||||||
import buildVersionInjectable from "../../vars/build-version/build-version.injectable";
|
import { buildVersionInitializable } from "../../../features/vars/build-version/common/token";
|
||||||
|
|
||||||
const getVersionRouteInjectable = getRouteInjectable({
|
const getVersionRouteInjectable = getRouteInjectable({
|
||||||
id: "get-version-route",
|
id: "get-version-route",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => route({
|
||||||
const buildVersion = di.inject(buildVersionInjectable);
|
|
||||||
|
|
||||||
return route({
|
|
||||||
method: "get",
|
method: "get",
|
||||||
path: `/version`,
|
path: `/version`,
|
||||||
})(() => ({
|
})(() => ({
|
||||||
response: {
|
response: {
|
||||||
version: buildVersion.get(),
|
version: di.inject(buildVersionInitializable.stateToken),
|
||||||
},
|
|
||||||
}));
|
|
||||||
},
|
},
|
||||||
|
})),
|
||||||
});
|
});
|
||||||
|
|
||||||
export default getVersionRouteInjectable;
|
export default getVersionRouteInjectable;
|
||||||
|
|||||||
@ -19,7 +19,6 @@ import getBasenameOfPathInjectable from "../../../common/path/get-basename.injec
|
|||||||
import computeShellEnvironmentInjectable from "../../../features/shell-sync/main/compute-shell-environment.injectable";
|
import computeShellEnvironmentInjectable from "../../../features/shell-sync/main/compute-shell-environment.injectable";
|
||||||
import spawnPtyInjectable from "../spawn-pty.injectable";
|
import spawnPtyInjectable from "../spawn-pty.injectable";
|
||||||
import appNameInjectable from "../../../common/vars/app-name.injectable";
|
import appNameInjectable from "../../../common/vars/app-name.injectable";
|
||||||
import buildVersionInjectable from "../../vars/build-version/build-version.injectable";
|
|
||||||
import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable";
|
import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable";
|
||||||
import statInjectable from "../../../common/fs/stat.injectable";
|
import statInjectable from "../../../common/fs/stat.injectable";
|
||||||
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
|
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
|
||||||
@ -27,6 +26,7 @@ import userPreferencesStateInjectable from "../../../features/user-preferences/c
|
|||||||
import userShellSettingInjectable from "../../../features/user-preferences/common/shell-setting.injectable";
|
import userShellSettingInjectable from "../../../features/user-preferences/common/shell-setting.injectable";
|
||||||
import shellSessionEnvsInjectable from "../shell-envs.injectable";
|
import shellSessionEnvsInjectable from "../shell-envs.injectable";
|
||||||
import shellSessionProcessesInjectable from "../processes.injectable";
|
import shellSessionProcessesInjectable from "../processes.injectable";
|
||||||
|
import { buildVersionInitializable } from "../../../features/vars/build-version/common/token";
|
||||||
|
|
||||||
export interface OpenLocalShellSessionArgs {
|
export interface OpenLocalShellSessionArgs {
|
||||||
websocket: WebSocket;
|
websocket: WebSocket;
|
||||||
@ -49,7 +49,7 @@ const openLocalShellSessionInjectable = getInjectable({
|
|||||||
state: di.inject(userPreferencesStateInjectable),
|
state: di.inject(userPreferencesStateInjectable),
|
||||||
userShellSetting: di.inject(userShellSettingInjectable),
|
userShellSetting: di.inject(userShellSettingInjectable),
|
||||||
appName: di.inject(appNameInjectable),
|
appName: di.inject(appNameInjectable),
|
||||||
buildVersion: di.inject(buildVersionInjectable),
|
buildVersion: di.inject(buildVersionInitializable.stateToken),
|
||||||
shellSessionEnvs: di.inject(shellSessionEnvsInjectable),
|
shellSessionEnvs: di.inject(shellSessionEnvsInjectable),
|
||||||
shellSessionProcesses: di.inject(shellSessionProcessesInjectable),
|
shellSessionProcesses: di.inject(shellSessionProcessesInjectable),
|
||||||
modifyTerminalShellEnv: di.inject(modifyTerminalShellEnvInjectable),
|
modifyTerminalShellEnv: di.inject(modifyTerminalShellEnvInjectable),
|
||||||
|
|||||||
@ -14,13 +14,13 @@ import readJsonSyncInjectable from "../../../common/fs/read-json-sync.injectable
|
|||||||
import statInjectable from "../../../common/fs/stat.injectable";
|
import statInjectable from "../../../common/fs/stat.injectable";
|
||||||
import writeJsonSyncInjectable from "../../../common/fs/write-json-sync.injectable";
|
import writeJsonSyncInjectable from "../../../common/fs/write-json-sync.injectable";
|
||||||
import platformInjectable from "../../../common/vars/platform.injectable";
|
import platformInjectable from "../../../common/vars/platform.injectable";
|
||||||
|
import { buildVersionStateInjectable } from "../../../features/vars/build-version/main/init.injectable";
|
||||||
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
|
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
|
||||||
import type { KubeconfigManager } from "../../kubeconfig-manager/kubeconfig-manager";
|
import type { KubeconfigManager } from "../../kubeconfig-manager/kubeconfig-manager";
|
||||||
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
|
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
|
||||||
import createKubectlInjectable from "../../kubectl/create-kubectl.injectable";
|
import createKubectlInjectable from "../../kubectl/create-kubectl.injectable";
|
||||||
import type { Kubectl } from "../../kubectl/kubectl";
|
import type { Kubectl } from "../../kubectl/kubectl";
|
||||||
import lensProxyPortInjectable from "../../lens-proxy/lens-proxy-port.injectable";
|
import lensProxyPortInjectable from "../../lens-proxy/lens-proxy-port.injectable";
|
||||||
import buildVersionInjectable from "../../vars/build-version/build-version.injectable";
|
|
||||||
import type { OpenShellSession } from "../create-shell-session.injectable";
|
import type { OpenShellSession } from "../create-shell-session.injectable";
|
||||||
import type { SpawnPty } from "../spawn-pty.injectable";
|
import type { SpawnPty } from "../spawn-pty.injectable";
|
||||||
import spawnPtyInjectable from "../spawn-pty.injectable";
|
import spawnPtyInjectable from "../spawn-pty.injectable";
|
||||||
@ -34,9 +34,7 @@ describe("technical unit tests for local shell sessions", () => {
|
|||||||
|
|
||||||
di.override(directoryForUserDataInjectable, () => "/some-directory-for-user-data");
|
di.override(directoryForUserDataInjectable, () => "/some-directory-for-user-data");
|
||||||
di.override(directoryForTempInjectable, () => "/some-directory-for-tmp");
|
di.override(directoryForTempInjectable, () => "/some-directory-for-tmp");
|
||||||
di.override(buildVersionInjectable, () => ({
|
di.override(buildVersionStateInjectable, () => "1.1.1");
|
||||||
get: () => "1.1.1",
|
|
||||||
}));
|
|
||||||
di.override(pathExistsInjectable, () => () => { throw new Error("tried call pathExists without override"); });
|
di.override(pathExistsInjectable, () => () => { throw new Error("tried call pathExists without override"); });
|
||||||
di.override(pathExistsSyncInjectable, () => () => { throw new Error("tried call pathExistsSync without override"); });
|
di.override(pathExistsSyncInjectable, () => () => { throw new Error("tried call pathExistsSync without override"); });
|
||||||
di.override(readJsonSyncInjectable, () => () => { throw new Error("tried call readJsonSync without override"); });
|
di.override(readJsonSyncInjectable, () => () => { throw new Error("tried call readJsonSync without override"); });
|
||||||
|
|||||||
@ -15,7 +15,6 @@ import createKubeJsonApiForClusterInjectable from "../../../common/k8s-api/creat
|
|||||||
import computeShellEnvironmentInjectable from "../../../features/shell-sync/main/compute-shell-environment.injectable";
|
import computeShellEnvironmentInjectable from "../../../features/shell-sync/main/compute-shell-environment.injectable";
|
||||||
import spawnPtyInjectable from "../spawn-pty.injectable";
|
import spawnPtyInjectable from "../spawn-pty.injectable";
|
||||||
import appNameInjectable from "../../../common/vars/app-name.injectable";
|
import appNameInjectable from "../../../common/vars/app-name.injectable";
|
||||||
import buildVersionInjectable from "../../vars/build-version/build-version.injectable";
|
|
||||||
import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable";
|
import emitAppEventInjectable from "../../../common/app-event-bus/emit-event.injectable";
|
||||||
import statInjectable from "../../../common/fs/stat.injectable";
|
import statInjectable from "../../../common/fs/stat.injectable";
|
||||||
import createKubeApiInjectable from "../../../common/k8s-api/create-kube-api.injectable";
|
import createKubeApiInjectable from "../../../common/k8s-api/create-kube-api.injectable";
|
||||||
@ -24,6 +23,7 @@ import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-man
|
|||||||
import userShellSettingInjectable from "../../../features/user-preferences/common/shell-setting.injectable";
|
import userShellSettingInjectable from "../../../features/user-preferences/common/shell-setting.injectable";
|
||||||
import shellSessionEnvsInjectable from "../shell-envs.injectable";
|
import shellSessionEnvsInjectable from "../shell-envs.injectable";
|
||||||
import shellSessionProcessesInjectable from "../processes.injectable";
|
import shellSessionProcessesInjectable from "../processes.injectable";
|
||||||
|
import { buildVersionInitializable } from "../../../features/vars/build-version/common/token";
|
||||||
|
|
||||||
export interface NodeShellSessionArgs {
|
export interface NodeShellSessionArgs {
|
||||||
websocket: WebSocket;
|
websocket: WebSocket;
|
||||||
@ -44,7 +44,7 @@ const openNodeShellSessionInjectable = getInjectable({
|
|||||||
logger: di.inject(loggerInjectable),
|
logger: di.inject(loggerInjectable),
|
||||||
userShellSetting: di.inject(userShellSettingInjectable),
|
userShellSetting: di.inject(userShellSettingInjectable),
|
||||||
appName: di.inject(appNameInjectable),
|
appName: di.inject(appNameInjectable),
|
||||||
buildVersion: di.inject(buildVersionInjectable),
|
buildVersion: di.inject(buildVersionInitializable.stateToken),
|
||||||
shellSessionEnvs: di.inject(shellSessionEnvsInjectable),
|
shellSessionEnvs: di.inject(shellSessionEnvsInjectable),
|
||||||
shellSessionProcesses: di.inject(shellSessionProcessesInjectable),
|
shellSessionProcesses: di.inject(shellSessionProcessesInjectable),
|
||||||
createKubeJsonApiForCluster: di.inject(createKubeJsonApiForClusterInjectable),
|
createKubeJsonApiForCluster: di.inject(createKubeJsonApiForClusterInjectable),
|
||||||
|
|||||||
@ -15,7 +15,6 @@ import { type TerminalMessage, TerminalChannels } from "../../common/terminal/ch
|
|||||||
import type { Logger } from "../../common/logger";
|
import type { Logger } from "../../common/logger";
|
||||||
import type { ComputeShellEnvironment } from "../../features/shell-sync/main/compute-shell-environment.injectable";
|
import type { ComputeShellEnvironment } from "../../features/shell-sync/main/compute-shell-environment.injectable";
|
||||||
import type { SpawnPty } from "./spawn-pty.injectable";
|
import type { SpawnPty } from "./spawn-pty.injectable";
|
||||||
import type { InitializableState } from "../../common/initializable-state/create";
|
|
||||||
import type { EmitAppEvent } from "../../common/app-event-bus/emit-event.injectable";
|
import type { EmitAppEvent } from "../../common/app-event-bus/emit-event.injectable";
|
||||||
import type { Stat } from "../../common/fs/stat.injectable";
|
import type { Stat } from "../../common/fs/stat.injectable";
|
||||||
import type { IComputedValue } from "mobx";
|
import type { IComputedValue } from "mobx";
|
||||||
@ -112,7 +111,7 @@ export interface ShellSessionDependencies {
|
|||||||
readonly logger: Logger;
|
readonly logger: Logger;
|
||||||
readonly userShellSetting: IComputedValue<string>;
|
readonly userShellSetting: IComputedValue<string>;
|
||||||
readonly appName: string;
|
readonly appName: string;
|
||||||
readonly buildVersion: InitializableState<string>;
|
readonly buildVersion: string;
|
||||||
readonly proxyKubeconfigPath: string;
|
readonly proxyKubeconfigPath: string;
|
||||||
readonly directoryContainingKubectl: string;
|
readonly directoryContainingKubectl: string;
|
||||||
readonly shellSessionEnvs: ShellSessionEnvs;
|
readonly shellSessionEnvs: ShellSessionEnvs;
|
||||||
@ -363,7 +362,7 @@ export abstract class ShellSession {
|
|||||||
env.PTYPID = process.pid.toString();
|
env.PTYPID = process.pid.toString();
|
||||||
env.KUBECONFIG = this.dependencies.proxyKubeconfigPath;
|
env.KUBECONFIG = this.dependencies.proxyKubeconfigPath;
|
||||||
env.TERM_PROGRAM = this.dependencies.appName;
|
env.TERM_PROGRAM = this.dependencies.appName;
|
||||||
env.TERM_PROGRAM_VERSION = this.dependencies.buildVersion.get();
|
env.TERM_PROGRAM_VERSION = this.dependencies.buildVersion;
|
||||||
|
|
||||||
if (this.cluster.preferences.httpsProxy) {
|
if (this.cluster.preferences.httpsProxy) {
|
||||||
env.HTTPS_PROXY = this.cluster.preferences.httpsProxy;
|
env.HTTPS_PROXY = this.cluster.preferences.httpsProxy;
|
||||||
|
|||||||
@ -10,11 +10,11 @@ import lensProxyPortInjectable from "../../lens-proxy/lens-proxy-port.injectable
|
|||||||
import isWindowsInjectable from "../../../common/vars/is-windows.injectable";
|
import isWindowsInjectable from "../../../common/vars/is-windows.injectable";
|
||||||
import showErrorPopupInjectable from "../../electron-app/features/show-error-popup.injectable";
|
import showErrorPopupInjectable from "../../electron-app/features/show-error-popup.injectable";
|
||||||
import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application";
|
import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application";
|
||||||
import buildVersionInjectable from "../../vars/build-version/build-version.injectable";
|
|
||||||
import initializeBuildVersionInjectable from "../../vars/build-version/init.injectable";
|
|
||||||
import lensProxyCertificateInjectable from "../../../common/certificate/lens-proxy-certificate.injectable";
|
import lensProxyCertificateInjectable from "../../../common/certificate/lens-proxy-certificate.injectable";
|
||||||
import fetchInjectable from "../../../common/fetch/fetch.injectable";
|
import fetchInjectable from "../../../common/fetch/fetch.injectable";
|
||||||
import { Agent } from "https";
|
import { Agent } from "https";
|
||||||
|
import { buildVersionInitializable } from "../../../features/vars/build-version/common/token";
|
||||||
|
import { buildVersionInitializationInjectable } from "../../../features/vars/build-version/main/init.injectable";
|
||||||
|
|
||||||
const setupLensProxyInjectable = getInjectable({
|
const setupLensProxyInjectable = getInjectable({
|
||||||
id: "setup-lens-proxy",
|
id: "setup-lens-proxy",
|
||||||
@ -27,7 +27,7 @@ const setupLensProxyInjectable = getInjectable({
|
|||||||
const lensProxyPort = di.inject(lensProxyPortInjectable);
|
const lensProxyPort = di.inject(lensProxyPortInjectable);
|
||||||
const isWindows = di.inject(isWindowsInjectable);
|
const isWindows = di.inject(isWindowsInjectable);
|
||||||
const showErrorPopup = di.inject(showErrorPopupInjectable);
|
const showErrorPopup = di.inject(showErrorPopupInjectable);
|
||||||
const buildVersion = di.inject(buildVersionInjectable);
|
const buildVersion = di.inject(buildVersionInitializable.stateToken);
|
||||||
const lensProxyCertificate = di.inject(lensProxyCertificateInjectable);
|
const lensProxyCertificate = di.inject(lensProxyCertificateInjectable);
|
||||||
const fetch = di.inject(fetchInjectable);
|
const fetch = di.inject(fetchInjectable);
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ const setupLensProxyInjectable = getInjectable({
|
|||||||
|
|
||||||
const { version: versionFromProxy } = await versionResponse.json() as { version: string };
|
const { version: versionFromProxy } = await versionResponse.json() as { version: string };
|
||||||
|
|
||||||
if (buildVersion.get() !== versionFromProxy) {
|
if (buildVersion !== versionFromProxy) {
|
||||||
logger.error("Proxy server responded with invalid response");
|
logger.error("Proxy server responded with invalid response");
|
||||||
|
|
||||||
return forceAppExit();
|
return forceAppExit();
|
||||||
@ -76,7 +76,7 @@ const setupLensProxyInjectable = getInjectable({
|
|||||||
return forceAppExit();
|
return forceAppExit();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
runAfter: initializeBuildVersionInjectable,
|
runAfter: buildVersionInitializationInjectable,
|
||||||
}),
|
}),
|
||||||
|
|
||||||
causesSideEffects: true,
|
causesSideEffects: true,
|
||||||
|
|||||||
@ -1,19 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { createInitializableState } from "../../../common/initializable-state/create";
|
|
||||||
import { buildVersionInjectionToken } from "../../../common/vars/build-semantic-version.injectable";
|
|
||||||
import getBuildVersionInjectable from "./get-build-version.injectable";
|
|
||||||
|
|
||||||
const buildVersionInjectable = createInitializableState({
|
|
||||||
id: "build-version",
|
|
||||||
init: (di) => {
|
|
||||||
const getBuildVersion = di.inject(getBuildVersionInjectable);
|
|
||||||
|
|
||||||
return getBuildVersion();
|
|
||||||
},
|
|
||||||
injectionToken: buildVersionInjectionToken,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default buildVersionInjectable;
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
|
||||||
import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application";
|
|
||||||
import buildVersionInjectable from "./build-version.injectable";
|
|
||||||
|
|
||||||
const initializeBuildVersionInjectable = getInjectable({
|
|
||||||
id: "initialize-build-version",
|
|
||||||
instantiate: (di) => ({
|
|
||||||
run: async () => {
|
|
||||||
const buildVersion = di.inject(buildVersionInjectable);
|
|
||||||
|
|
||||||
await buildVersion.init();
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default initializeBuildVersionInjectable;
|
|
||||||
@ -5,7 +5,7 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import buildSemanticVersionInjectable from "../../../common/vars/build-semantic-version.injectable";
|
import buildSemanticVersionInjectable from "../../../common/vars/build-semantic-version.injectable";
|
||||||
import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application";
|
import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application";
|
||||||
import initializeBuildVersionInjectable from "../build-version/init.injectable";
|
import { buildVersionInitializationInjectable } from "../../../features/vars/build-version/main/init.injectable";
|
||||||
|
|
||||||
const initSemanticBuildVersionInjectable = getInjectable({
|
const initSemanticBuildVersionInjectable = getInjectable({
|
||||||
id: "init-semantic-build-version",
|
id: "init-semantic-build-version",
|
||||||
@ -16,7 +16,7 @@ const initSemanticBuildVersionInjectable = getInjectable({
|
|||||||
|
|
||||||
await buildSemanticVersion.init();
|
await buildSemanticVersion.init();
|
||||||
},
|
},
|
||||||
runAfter: initializeBuildVersionInjectable,
|
runAfter: buildVersionInitializationInjectable,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||||
|
|||||||
@ -1,19 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { createInitializableState } from "../../../common/initializable-state/create";
|
|
||||||
import { requestFromChannelInjectionToken } from "@k8slens/messaging";
|
|
||||||
import { buildVersionChannel, buildVersionInjectionToken } from "../../../common/vars/build-semantic-version.injectable";
|
|
||||||
|
|
||||||
const buildVersionInjectable = createInitializableState({
|
|
||||||
id: "build-version",
|
|
||||||
init: (di) => {
|
|
||||||
const requestFromChannel = di.inject(requestFromChannelInjectionToken);
|
|
||||||
|
|
||||||
return requestFromChannel(buildVersionChannel);
|
|
||||||
},
|
|
||||||
injectionToken: buildVersionInjectionToken,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default buildVersionInjectable;
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
|
||||||
import { beforeFrameStartsSecondInjectionToken } from "../../before-frame-starts/tokens";
|
|
||||||
import buildVersionInjectable from "./build-version.injectable";
|
|
||||||
|
|
||||||
const initializeBuildVersionInjectable = getInjectable({
|
|
||||||
id: "initialize-build-version",
|
|
||||||
instantiate: (di) => ({
|
|
||||||
run: async () => {
|
|
||||||
const buildVersion = di.inject(buildVersionInjectable);
|
|
||||||
|
|
||||||
await buildVersion.init();
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
injectionToken: beforeFrameStartsSecondInjectionToken,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default initializeBuildVersionInjectable;
|
|
||||||
@ -4,8 +4,8 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import buildSemanticVersionInjectable from "../../../common/vars/build-semantic-version.injectable";
|
import buildSemanticVersionInjectable from "../../../common/vars/build-semantic-version.injectable";
|
||||||
|
import { buildVersionInitializationInjectable } from "../../../features/vars/build-version/renderer/init.injectable";
|
||||||
import { beforeFrameStartsSecondInjectionToken } from "../../before-frame-starts/tokens";
|
import { beforeFrameStartsSecondInjectionToken } from "../../before-frame-starts/tokens";
|
||||||
import initializeBuildVersionInjectable from "../build-version/init.injectable";
|
|
||||||
|
|
||||||
const initSemanticBuildVersionInjectable = getInjectable({
|
const initSemanticBuildVersionInjectable = getInjectable({
|
||||||
id: "init-semantic-build-version",
|
id: "init-semantic-build-version",
|
||||||
@ -15,7 +15,7 @@ const initSemanticBuildVersionInjectable = getInjectable({
|
|||||||
|
|
||||||
await buildSemanticVersion.init();
|
await buildSemanticVersion.init();
|
||||||
},
|
},
|
||||||
runAfter: initializeBuildVersionInjectable,
|
runAfter: buildVersionInitializationInjectable,
|
||||||
}),
|
}),
|
||||||
injectionToken: beforeFrameStartsSecondInjectionToken,
|
injectionToken: beforeFrameStartsSecondInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user