diff --git a/src/common/__tests__/cluster-store.test.ts b/src/common/__tests__/cluster-store.test.ts index b5d173b976..f95ba43a20 100644 --- a/src/common/__tests__/cluster-store.test.ts +++ b/src/common/__tests__/cluster-store.test.ts @@ -19,7 +19,7 @@ import directoryForUserDataInjectable from "../app-paths/directory-for-user-data import { getDiForUnitTesting } from "../../main/getDiForUnitTesting"; import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable"; import assert from "assert"; -import directoryForTempInjectable from "../app-paths/directory-for-temp/directory-for-temp.injectable"; +import directoryForTempInjectable from "../app-paths/directory-for-temp.injectable"; import kubectlBinaryNameInjectable from "../../main/kubectl/binary-name.injectable"; import kubectlDownloadingNormalizedArchInjectable from "../../main/kubectl/normalized-arch.injectable"; import normalizedPlatformInjectable from "../vars/normalized-platform.injectable"; @@ -89,7 +89,9 @@ describe("cluster-store", () => { mainDi.override(directoryForUserDataInjectable, () => ({ get: () => "some-directory-for-user-data", })); - mainDi.override(directoryForTempInjectable, () => "some-temp-directory"); + mainDi.override(directoryForTempInjectable, () => ({ + get: () => "some-directory-for-temp", + })); mainDi.override(kubectlBinaryNameInjectable, () => "kubectl"); mainDi.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64"); mainDi.override(normalizedPlatformInjectable, () => "darwin"); diff --git a/src/common/app-paths/directory-for-temp.injectable.ts b/src/common/app-paths/directory-for-temp.injectable.ts new file mode 100644 index 0000000000..4099de2749 --- /dev/null +++ b/src/common/app-paths/directory-for-temp.injectable.ts @@ -0,0 +1,13 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { createLazyInitializableState } from "../initializable-state/create-lazy"; +import { appPathsInjectionToken } from "./token"; + +const directoryForTempInjectable = createLazyInitializableState({ + id: "directory-for-temp", + init: (di) => di.inject(appPathsInjectionToken).get().temp, +}); + +export default directoryForTempInjectable; diff --git a/src/common/app-paths/directory-for-temp/directory-for-temp.injectable.ts b/src/common/app-paths/directory-for-temp/directory-for-temp.injectable.ts deleted file mode 100644 index b51e8e0489..0000000000 --- a/src/common/app-paths/directory-for-temp/directory-for-temp.injectable.ts +++ /dev/null @@ -1,13 +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 { appPathsInjectionToken } from "../app-path-injection-token"; - -const directoryForTempInjectable = getInjectable({ - id: "directory-for-temp", - instantiate: (di) => di.inject(appPathsInjectionToken).temp, -}); - -export default directoryForTempInjectable; diff --git a/src/main/__test__/cluster.test.ts b/src/main/__test__/cluster.test.ts index 02fe113c50..a3fd9e10b7 100644 --- a/src/main/__test__/cluster.test.ts +++ b/src/main/__test__/cluster.test.ts @@ -15,7 +15,7 @@ import createContextHandlerInjectable from "../context-handler/create-context-ha import type { ClusterContextHandler } from "../context-handler/context-handler"; import { parse } from "url"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable"; -import directoryForTempInjectable from "../../common/app-paths/directory-for-temp/directory-for-temp.injectable"; +import directoryForTempInjectable from "../../common/app-paths/directory-for-temp.injectable"; import normalizedPlatformInjectable from "../../common/vars/normalized-platform.injectable"; import kubectlBinaryNameInjectable from "../kubectl/binary-name.injectable"; import kubectlDownloadingNormalizedArchInjectable from "../kubectl/normalized-arch.injectable"; @@ -35,7 +35,9 @@ describe("create clusters", () => { di.override(directoryForUserDataInjectable, () => ({ get: () => "some-directory-for-user-data", })); - di.override(directoryForTempInjectable, () => "some-directory-for-temp"); + di.override(directoryForTempInjectable, () => ({ + get: () => "some-directory-for-temp", + })); di.override(kubectlBinaryNameInjectable, () => "kubectl"); di.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64"); di.override(normalizedPlatformInjectable, () => "darwin"); diff --git a/src/main/__test__/kube-auth-proxy.test.ts b/src/main/__test__/kube-auth-proxy.test.ts index 29bfed5515..f7b37e7da2 100644 --- a/src/main/__test__/kube-auth-proxy.test.ts +++ b/src/main/__test__/kube-auth-proxy.test.ts @@ -23,7 +23,7 @@ import path from "path"; import spawnInjectable from "../child-process/spawn.injectable"; import getConfigurationFileModelInjectable from "../../common/get-configuration-file-model/get-configuration-file-model.injectable"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable"; -import directoryForTempInjectable from "../../common/app-paths/directory-for-temp/directory-for-temp.injectable"; +import directoryForTempInjectable from "../../common/app-paths/directory-for-temp.injectable"; import normalizedPlatformInjectable from "../../common/vars/normalized-platform.injectable"; import kubectlBinaryNameInjectable from "../kubectl/binary-name.injectable"; import kubectlDownloadingNormalizedArchInjectable from "../kubectl/normalized-arch.injectable"; @@ -74,7 +74,9 @@ describe("kube auth proxy tests", () => { di.override(directoryForUserDataInjectable, () => ({ get: () => "some-directory-for-user-data", })); - di.override(directoryForTempInjectable, () => "some-directory-for-temp"); + di.override(directoryForTempInjectable, () => ({ + get: () => "some-directory-for-temp", + })); spawnMock = jest.fn(); di.override(spawnInjectable, () => spawnMock); diff --git a/src/main/__test__/kubeconfig-manager.test.ts b/src/main/__test__/kubeconfig-manager.test.ts index 61264b8dd1..4fc0f57523 100644 --- a/src/main/__test__/kubeconfig-manager.test.ts +++ b/src/main/__test__/kubeconfig-manager.test.ts @@ -7,7 +7,7 @@ import { KubeconfigManager } from "../kubeconfig-manager/kubeconfig-manager"; import type { Cluster } from "../../common/cluster/cluster"; import createKubeconfigManagerInjectable from "../kubeconfig-manager/create-kubeconfig-manager.injectable"; import { createClusterInjectionToken } from "../../common/cluster/create-cluster-injection-token"; -import directoryForTempInjectable from "../../common/app-paths/directory-for-temp/directory-for-temp.injectable"; +import directoryForTempInjectable from "../../common/app-paths/directory-for-temp.injectable"; import createContextHandlerInjectable from "../context-handler/create-context-handler.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; import { parse } from "url"; @@ -45,7 +45,9 @@ describe("kubeconfig manager tests", () => { beforeEach(async () => { di = getDiForUnitTesting({ doGeneralOverrides: true }); - di.override(directoryForTempInjectable, () => "/some-directory-for-temp"); + di.override(directoryForTempInjectable, () => ({ + get: () => "/some-directory-for-temp", + })); di.override(directoryForUserDataInjectable, () => ({ get: () => "/some-directory-for-user-data", })); diff --git a/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts b/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts index 0afae049b0..224d420a7a 100644 --- a/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts +++ b/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts @@ -9,7 +9,7 @@ import { loadFromOptions } from "../../../common/kube-helpers"; import type { Cluster } from "../../../common/cluster/cluster"; import { getDiForUnitTesting } from "../../getDiForUnitTesting"; import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data.injectable"; -import directoryForTempInjectable from "../../../common/app-paths/directory-for-temp/directory-for-temp.injectable"; +import directoryForTempInjectable from "../../../common/app-paths/directory-for-temp.injectable"; import { iter, strictGet } from "../../../common/utils"; import type { ComputeKubeconfigDiff } from "../kubeconfig-sync/compute-diff.injectable"; import computeKubeconfigDiffInjectable from "../kubeconfig-sync/compute-diff.injectable"; @@ -44,14 +44,14 @@ describe("kubeconfig-sync.source tests", () => { beforeEach(async () => { di = getDiForUnitTesting({ doGeneralOverrides: true }); - di.override(directoryForTempInjectable, () => "/some-directory-for-temp"); - clusters = new Map(); di.override(getClusterByIdInjectable, () => id => clusters.get(id)); di.override(directoryForUserDataInjectable, () => ({ get: () => "some-directory-for-user-data", })); - di.override(directoryForTempInjectable, () => "some-directory-for-temp"); + di.override(directoryForTempInjectable, () => ({ + get: () => "some-directory-for-temp", + })); di.override(kubectlBinaryNameInjectable, () => "kubectl"); di.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64"); di.override(normalizedPlatformInjectable, () => "darwin"); diff --git a/src/main/kubeconfig-manager/create-kubeconfig-manager.injectable.ts b/src/main/kubeconfig-manager/create-kubeconfig-manager.injectable.ts index ed75943398..12aeb82453 100644 --- a/src/main/kubeconfig-manager/create-kubeconfig-manager.injectable.ts +++ b/src/main/kubeconfig-manager/create-kubeconfig-manager.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import type { Cluster } from "../../common/cluster/cluster"; -import directoryForTempInjectable from "../../common/app-paths/directory-for-temp/directory-for-temp.injectable"; +import directoryForTempInjectable from "../../common/app-paths/directory-for-temp.injectable"; import type { KubeconfigManagerDependencies } from "./kubeconfig-manager"; import { KubeconfigManager } from "./kubeconfig-manager"; import loggerInjectable from "../../common/logger.injectable"; diff --git a/src/main/kubeconfig-manager/kubeconfig-manager.ts b/src/main/kubeconfig-manager/kubeconfig-manager.ts index a51599169e..89a3f4a6fc 100644 --- a/src/main/kubeconfig-manager/kubeconfig-manager.ts +++ b/src/main/kubeconfig-manager/kubeconfig-manager.ts @@ -15,9 +15,10 @@ import type { GetDirnameOfPath } from "../../common/path/get-dirname.injectable" import type { PathExists } from "../../common/fs/path-exists.injectable"; import type { DeleteFile } from "../../common/fs/delete-file.injectable"; import type { WriteFile } from "../../common/fs/write-file.injectable"; +import type { LazyInitializableState } from "../../common/initializable-state/create-lazy"; export interface KubeconfigManagerDependencies { - readonly directoryForTemp: string; + readonly directoryForTemp: LazyInitializableState; readonly logger: Logger; readonly lensProxyPort: { get: () => number }; joinPaths: JoinPaths; @@ -97,7 +98,7 @@ export class KubeconfigManager { const { cluster } = this; const { contextName, id } = cluster; const tempFile = this.dependencies.joinPaths( - this.dependencies.directoryForTemp, + this.dependencies.directoryForTemp.get(), `kubeconfig-${id}`, ); const kubeConfig = await cluster.getKubeconfig();