chore: Switch buildVersion to use new Initializable

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton committed 2023-04-18 08:16:40 -04:00
1 parent 72a01cdc17
commit 1b96a94c14
26 files changed
+105 -152

No files matched your search

@@ -1,19 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* 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 buildVersionInjectable from "../vars/build-version/build-version.injectable";
const buildVersionChannelListenerInjectable = getRequestChannelListenerInjectable({
id: "build-version-channel-listener",
channel: buildVersionChannel,
getHandler: (di) => {
const buildVersion = di.inject(buildVersionInjectable);
return () => buildVersion.get();
},
});
export default buildVersionChannelListenerInjectable;
@@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import electronAppInjectable from "../../electron-app/electron-app.injectable";
import electronAppInjectable from "../electron-app.injectable";
const getBuildVersionInjectable = getInjectable({
id: "get-build-version",
@@ -6,18 +6,20 @@ import { beforeApplicationIsLoadingInjectionToken } from "@k8slens/application";
import { getInjectable } from "@ogre-tools/injectable";
import loggerInjectable from "../../common/logger.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({
id: "log-version-on-start",
instantiate: (di) => ({
run: () => {
const logger = di.inject(loggerInjectable);
const buildVersion = di.inject(buildVersionInjectable).get();
const buildVersion = di.inject(buildVersionInitializable.stateToken);
const appName = di.inject(appNameInjectable);
logger.info(`Starting v${buildVersion} of ${appName}...`);
},
runAfter: buildVersionInitializationInjectable,
}),
injectionToken: beforeApplicationIsLoadingInjectionToken,
});
@@ -4,23 +4,19 @@
*/
import { getRouteInjectable } from "../../router/router.injectable";
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({
id: "get-version-route",
instantiate: (di) => {
const buildVersion = di.inject(buildVersionInjectable);
return route({
method: "get",
path: `/version`,
})(() => ({
response: {
version: buildVersion.get(),
},
}));
},
instantiate: (di) => route({
method: "get",
path: `/version`,
})(() => ({
response: {
version: di.inject(buildVersionInitializable.stateToken),
},
})),
});
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 spawnPtyInjectable from "../spawn-pty.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 statInjectable from "../../../common/fs/stat.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 shellSessionEnvsInjectable from "../shell-envs.injectable";
import shellSessionProcessesInjectable from "../processes.injectable";
import { buildVersionInitializable } from "../../../features/vars/build-version/common/token";
export interface OpenLocalShellSessionArgs {
websocket: WebSocket;
@@ -49,7 +49,7 @@ const openLocalShellSessionInjectable = getInjectable({
state: di.inject(userPreferencesStateInjectable),
userShellSetting: di.inject(userShellSettingInjectable),
appName: di.inject(appNameInjectable),
buildVersion: di.inject(buildVersionInjectable),
buildVersion: di.inject(buildVersionInitializable.stateToken),
shellSessionEnvs: di.inject(shellSessionEnvsInjectable),
shellSessionProcesses: di.inject(shellSessionProcessesInjectable),
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 writeJsonSyncInjectable from "../../../common/fs/write-json-sync.injectable";
import platformInjectable from "../../../common/vars/platform.injectable";
import { buildVersionStateInjectable } from "../../../features/vars/build-version/main/init.injectable";
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
import type { KubeconfigManager } from "../../kubeconfig-manager/kubeconfig-manager";
import kubeconfigManagerInjectable from "../../kubeconfig-manager/kubeconfig-manager.injectable";
import createKubectlInjectable from "../../kubectl/create-kubectl.injectable";
import type { Kubectl } from "../../kubectl/kubectl";
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 { SpawnPty } 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(directoryForTempInjectable, () => "/some-directory-for-tmp");
di.override(buildVersionInjectable, () => ({
get: () => "1.1.1",
}));
di.override(buildVersionStateInjectable, () => "1.1.1");
di.override(pathExistsInjectable, () => () => { throw new Error("tried call pathExists without override"); });
di.override(pathExistsSyncInjectable, () => () => { throw new Error("tried call pathExistsSync 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 spawnPtyInjectable from "../spawn-pty.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 statInjectable from "../../../common/fs/stat.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 shellSessionEnvsInjectable from "../shell-envs.injectable";
import shellSessionProcessesInjectable from "../processes.injectable";
import { buildVersionInitializable } from "../../../features/vars/build-version/common/token";
export interface NodeShellSessionArgs {
websocket: WebSocket;
@@ -44,7 +44,7 @@ const openNodeShellSessionInjectable = getInjectable({
logger: di.inject(loggerInjectable),
userShellSetting: di.inject(userShellSettingInjectable),
appName: di.inject(appNameInjectable),
buildVersion: di.inject(buildVersionInjectable),
buildVersion: di.inject(buildVersionInitializable.stateToken),
shellSessionEnvs: di.inject(shellSessionEnvsInjectable),
shellSessionProcesses: di.inject(shellSessionProcessesInjectable),
createKubeJsonApiForCluster: di.inject(createKubeJsonApiForClusterInjectable),
@@ -15,7 +15,6 @@ import { type TerminalMessage, TerminalChannels } from "../../common/terminal/ch
import type { Logger } from "../../common/logger";
import type { ComputeShellEnvironment } from "../../features/shell-sync/main/compute-shell-environment.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 { Stat } from "../../common/fs/stat.injectable";
import type { IComputedValue } from "mobx";
@@ -112,7 +111,7 @@ export interface ShellSessionDependencies {
readonly logger: Logger;
readonly userShellSetting: IComputedValue<string>;
readonly appName: string;
readonly buildVersion: InitializableState<string>;
readonly buildVersion: string;
readonly proxyKubeconfigPath: string;
readonly directoryContainingKubectl: string;
readonly shellSessionEnvs: ShellSessionEnvs;
@@ -363,7 +362,7 @@ export abstract class ShellSession {
env.PTYPID = process.pid.toString();
env.KUBECONFIG = this.dependencies.proxyKubeconfigPath;
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) {
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 showErrorPopupInjectable from "../../electron-app/features/show-error-popup.injectable";
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 fetchInjectable from "../../../common/fetch/fetch.injectable";
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({
id: "setup-lens-proxy",
@@ -27,7 +27,7 @@ const setupLensProxyInjectable = getInjectable({
const lensProxyPort = di.inject(lensProxyPortInjectable);
const isWindows = di.inject(isWindowsInjectable);
const showErrorPopup = di.inject(showErrorPopupInjectable);
const buildVersion = di.inject(buildVersionInjectable);
const buildVersion = di.inject(buildVersionInitializable.stateToken);
const lensProxyCertificate = di.inject(lensProxyCertificateInjectable);
const fetch = di.inject(fetchInjectable);
@@ -51,7 +51,7 @@ const setupLensProxyInjectable = getInjectable({
const { version: versionFromProxy } = await versionResponse.json() as { version: string };
if (buildVersion.get() !== versionFromProxy) {
if (buildVersion !== versionFromProxy) {
logger.error("Proxy server responded with invalid response");
return forceAppExit();
@@ -76,7 +76,7 @@ const setupLensProxyInjectable = getInjectable({
return forceAppExit();
}
},
runAfter: initializeBuildVersionInjectable,
runAfter: buildVersionInitializationInjectable,
}),
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 buildSemanticVersionInjectable from "../../../common/vars/build-semantic-version.injectable";
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({
id: "init-semantic-build-version",
@@ -16,7 +16,7 @@ const initSemanticBuildVersionInjectable = getInjectable({
await buildSemanticVersion.init();
},
runAfter: initializeBuildVersionInjectable,
runAfter: buildVersionInitializationInjectable,
};
},
injectionToken: beforeApplicationIsLoadingInjectionToken,