From a7b928d4676282a5d0e470f7668a384cb8fe0c5e Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 14 Sep 2022 12:42:45 -0400 Subject: [PATCH] Convet DirectoryForKubeConfigs to LazyInitializableState Signed-off-by: Sebastian Malton --- .../directory-for-kube-configs.injectable.ts | 6 +++--- .../get-custom-kube-config-directory.injectable.ts | 4 ++-- src/common/cluster/cluster.ts | 5 +++-- src/common/fs/ensure-dir.injectable.ts | 3 ++- .../catalog-sources/kubeconfig-sync/manager.injectable.ts | 2 +- src/main/catalog-sources/kubeconfig-sync/manager.ts | 5 +++-- src/main/create-cluster/create-cluster.injectable.ts | 2 +- .../kube-config-sync/start-kube-config-sync.injectable.ts | 4 ++-- src/migrations/cluster-store/3.6.0-beta.1.ts | 4 ++-- src/migrations/user-store/5.0.3-beta.1.ts | 4 ++-- src/renderer/create-cluster/create-cluster.injectable.ts | 2 +- 11 files changed, 22 insertions(+), 19 deletions(-) rename src/common/app-paths/{directory-for-kube-configs => }/directory-for-kube-configs.injectable.ts (69%) diff --git a/src/common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable.ts b/src/common/app-paths/directory-for-kube-configs.injectable.ts similarity index 69% rename from src/common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable.ts rename to src/common/app-paths/directory-for-kube-configs.injectable.ts index d7020ded16..e7884e54cb 100644 --- a/src/common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable.ts +++ b/src/common/app-paths/directory-for-kube-configs.injectable.ts @@ -2,9 +2,9 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -import directoryForUserDataInjectable from "../directory-for-user-data.injectable"; -import joinPathsInjectable from "../../path/join-paths.injectable"; -import { createLazyInitializableState } from "../../initializable-state/create-lazy"; +import directoryForUserDataInjectable from "./directory-for-user-data.injectable"; +import joinPathsInjectable from "../path/join-paths.injectable"; +import { createLazyInitializableState } from "../initializable-state/create-lazy"; const directoryForKubeConfigsInjectable = createLazyInitializableState({ id: "directory-for-kube-configs", diff --git a/src/common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable.ts b/src/common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable.ts index 5d53e506bd..8f4c38c238 100644 --- a/src/common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable.ts +++ b/src/common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import directoryForKubeConfigsInjectable from "../directory-for-kube-configs/directory-for-kube-configs.injectable"; +import directoryForKubeConfigsInjectable from "../directory-for-kube-configs.injectable"; import joinPathsInjectable from "../../path/join-paths.injectable"; const getCustomKubeConfigDirectoryInjectable = getInjectable({ @@ -13,7 +13,7 @@ const getCustomKubeConfigDirectoryInjectable = getInjectable({ const directoryForKubeConfigs = di.inject(directoryForKubeConfigsInjectable); const joinPaths = di.inject(joinPathsInjectable); - return (directoryName: string) => joinPaths(directoryForKubeConfigs, directoryName); + return (directoryName: string) => joinPaths(directoryForKubeConfigs.get(), directoryName); }, }); diff --git a/src/common/cluster/cluster.ts b/src/common/cluster/cluster.ts index b0d7fbfbc3..24a2004ba1 100644 --- a/src/common/cluster/cluster.ts +++ b/src/common/cluster/cluster.ts @@ -25,9 +25,10 @@ import assert from "assert"; import type { Logger } from "../logger"; import type { BroadcastMessage } from "../ipc/broadcast-message.injectable"; import type { LoadConfigfromFile } from "../kube-helpers/load-config-from-file.injectable"; +import type { LazyInitializableState } from "../initializable-state/create-lazy"; export interface ClusterDependencies { - readonly directoryForKubeConfigs: string; + readonly directoryForKubeConfigs: LazyInitializableState; readonly logger: Logger; readonly detectorRegistry: DetectorRegistry; createKubeconfigManager: (cluster: Cluster) => KubeconfigManager; @@ -729,6 +730,6 @@ export class Cluster implements ClusterModel, ClusterState { } isInLocalKubeconfig() { - return this.kubeConfigPath.startsWith(this.dependencies.directoryForKubeConfigs); + return this.kubeConfigPath.startsWith(this.dependencies.directoryForKubeConfigs.get()); } } diff --git a/src/common/fs/ensure-dir.injectable.ts b/src/common/fs/ensure-dir.injectable.ts index 78ec4d91dc..36130045b4 100644 --- a/src/common/fs/ensure-dir.injectable.ts +++ b/src/common/fs/ensure-dir.injectable.ts @@ -3,9 +3,10 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; +import type { EnsureOptions } from "fs-extra"; import fsInjectable from "./fs.injectable"; -export type EnsureDirectory = (dirPath: string) => Promise; +export type EnsureDirectory = (path: string, options?: number | EnsureOptions | undefined) => Promise; const ensureDirInjectable = getInjectable({ id: "ensure-dir", diff --git a/src/main/catalog-sources/kubeconfig-sync/manager.injectable.ts b/src/main/catalog-sources/kubeconfig-sync/manager.injectable.ts index 06265764c8..2155b0b6e1 100644 --- a/src/main/catalog-sources/kubeconfig-sync/manager.injectable.ts +++ b/src/main/catalog-sources/kubeconfig-sync/manager.injectable.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; +import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs.injectable"; import { KubeconfigSyncManager } from "./manager"; import kubeconfigSyncLoggerInjectable from "./logger.injectable"; import watchKubeconfigFileChangesInjectable from "./watch-file-changes.injectable"; diff --git a/src/main/catalog-sources/kubeconfig-sync/manager.ts b/src/main/catalog-sources/kubeconfig-sync/manager.ts index 305f25a909..9fd4187a53 100644 --- a/src/main/catalog-sources/kubeconfig-sync/manager.ts +++ b/src/main/catalog-sources/kubeconfig-sync/manager.ts @@ -11,9 +11,10 @@ import { iter } from "../../../common/utils"; import type { KubeconfigSyncValue } from "../../../common/user-store"; import type { Logger } from "../../../common/logger"; import type { WatchKubeconfigFileChanges } from "./watch-file-changes.injectable"; +import type { LazyInitializableState } from "../../../common/initializable-state/create-lazy"; interface KubeconfigSyncManagerDependencies { - readonly directoryForKubeConfigs: string; + readonly directoryForKubeConfigs: LazyInitializableState; readonly logger: Logger; readonly kubeconfigSyncs: ObservableMap; watchKubeconfigFileChanges: WatchKubeconfigFileChanges; @@ -52,7 +53,7 @@ export class KubeconfigSyncManager { this.dependencies.logger.info(`starting requested syncs`); // This must be done so that c&p-ed clusters are visible - this.startNewSync(this.dependencies.directoryForKubeConfigs); + this.startNewSync(this.dependencies.directoryForKubeConfigs.get()); for (const filePath of this.dependencies.kubeconfigSyncs.keys()) { this.startNewSync(filePath); diff --git a/src/main/create-cluster/create-cluster.injectable.ts b/src/main/create-cluster/create-cluster.injectable.ts index 5290e92db3..89d9cacde6 100644 --- a/src/main/create-cluster/create-cluster.injectable.ts +++ b/src/main/create-cluster/create-cluster.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { ClusterDependencies } from "../../common/cluster/cluster"; import { Cluster } from "../../common/cluster/cluster"; -import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; +import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs.injectable"; import createKubeconfigManagerInjectable from "../kubeconfig-manager/create-kubeconfig-manager.injectable"; import createKubectlInjectable from "../kubectl/create-kubectl.injectable"; import createContextHandlerInjectable from "../context-handler/create-context-handler.injectable"; diff --git a/src/main/start-main-application/runnables/kube-config-sync/start-kube-config-sync.injectable.ts b/src/main/start-main-application/runnables/kube-config-sync/start-kube-config-sync.injectable.ts index ad0e446565..4ee87f82f7 100644 --- a/src/main/start-main-application/runnables/kube-config-sync/start-kube-config-sync.injectable.ts +++ b/src/main/start-main-application/runnables/kube-config-sync/start-kube-config-sync.injectable.ts @@ -4,7 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { afterApplicationIsLoadedInjectionToken } from "../../runnable-tokens/after-application-is-loaded-injection-token"; -import directoryForKubeConfigsInjectable from "../../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; +import directoryForKubeConfigsInjectable from "../../../../common/app-paths/directory-for-kube-configs.injectable"; import ensureDirInjectable from "../../../../common/fs/ensure-dir.injectable"; import kubeconfigSyncManagerInjectable from "../../../catalog-sources/kubeconfig-sync/manager.injectable"; import addKubeconfigSyncAsEntitySourceInjectable from "./add-source.injectable"; @@ -20,7 +20,7 @@ const startKubeConfigSyncInjectable = getInjectable({ return { id: "start-kubeconfig-sync", run: async () => { - await ensureDir(directoryForKubeConfigs); + await ensureDir(directoryForKubeConfigs.get()); kubeConfigSyncManager.startSync(); }, diff --git a/src/migrations/cluster-store/3.6.0-beta.1.ts b/src/migrations/cluster-store/3.6.0-beta.1.ts index 8c4024b92e..28a5255ecd 100644 --- a/src/migrations/cluster-store/3.6.0-beta.1.ts +++ b/src/migrations/cluster-store/3.6.0-beta.1.ts @@ -13,7 +13,7 @@ import { migrationLog } from "../helpers"; import type { ClusterModel } from "../../common/cluster-types"; import { getLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable"; -import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; +import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs.injectable"; import getCustomKubeConfigDirectoryInjectable from "../../common/app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable"; import readFileSyncInjectable from "../../common/fs/read-file-sync.injectable"; import joinPathsInjectable from "../../common/path/join-paths.injectable"; @@ -36,7 +36,7 @@ export default { const storedClusters: Pre360ClusterModel[] = store.get("clusters") ?? []; const migratedClusters: ClusterModel[] = []; - fse.ensureDirSync(kubeConfigsPath); + fse.ensureDirSync(kubeConfigsPath.get()); migrationLog("Number of clusters to migrate: ", storedClusters.length); diff --git a/src/migrations/user-store/5.0.3-beta.1.ts b/src/migrations/user-store/5.0.3-beta.1.ts index 87feed4e64..94257dc30c 100644 --- a/src/migrations/user-store/5.0.3-beta.1.ts +++ b/src/migrations/user-store/5.0.3-beta.1.ts @@ -12,7 +12,7 @@ import { migrationLog } from "../helpers"; import { isErrnoException } from "../../common/utils"; import { getLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable"; -import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; +import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs.injectable"; import joinPathsInjectable from "../../common/path/join-paths.injectable"; import isLogicalChildPathInjectable from "../../common/path/is-logical-child-path.injectable"; import getDirnameOfPathInjectable from "../../common/path/get-dirname.injectable"; @@ -26,7 +26,7 @@ export default { const di = getLegacyGlobalDiForExtensionApi(); const userDataPath = di.inject(directoryForUserDataInjectable).get(); - const kubeConfigsPath = di.inject(directoryForKubeConfigsInjectable); + const kubeConfigsPath = di.inject(directoryForKubeConfigsInjectable).get(); const joinPaths = di.inject(joinPathsInjectable); const isLogicalChildPath = di.inject(isLogicalChildPathInjectable); const getDirnameOfPath = di.inject(getDirnameOfPathInjectable); diff --git a/src/renderer/create-cluster/create-cluster.injectable.ts b/src/renderer/create-cluster/create-cluster.injectable.ts index 0c73eb82fa..891ea25686 100644 --- a/src/renderer/create-cluster/create-cluster.injectable.ts +++ b/src/renderer/create-cluster/create-cluster.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import type { ClusterDependencies } from "../../common/cluster/cluster"; import { Cluster } from "../../common/cluster/cluster"; -import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; +import directoryForKubeConfigsInjectable from "../../common/app-paths/directory-for-kube-configs.injectable"; import { createClusterInjectionToken } from "../../common/cluster/create-cluster-injection-token"; import loggerInjectable from "../../common/logger.injectable"; import broadcastMessageInjectable from "../../common/ipc/broadcast-message.injectable";