1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Convet DirectoryForKubeConfigs to LazyInitializableState

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-09-14 12:42:45 -04:00
parent 1c4e620e38
commit a7b928d467
11 changed files with 22 additions and 19 deletions

View File

@ -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",

View File

@ -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);
},
});

View File

@ -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<string>;
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());
}
}

View File

@ -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<void>;
export type EnsureDirectory = (path: string, options?: number | EnsureOptions | undefined) => Promise<void>;
const ensureDirInjectable = getInjectable({
id: "ensure-dir",

View File

@ -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";

View File

@ -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<string>;
readonly logger: Logger;
readonly kubeconfigSyncs: ObservableMap<string, KubeconfigSyncValue>;
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);

View File

@ -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";

View File

@ -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();
},

View File

@ -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);

View File

@ -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);

View File

@ -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";