mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
58 lines
2.3 KiB
TypeScript
58 lines
2.3 KiB
TypeScript
/**
|
|
* 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 type { AppPaths } from "../../common/app-paths/app-path-injection-token";
|
|
import getElectronAppPathInjectable from "./get-electron-app-path/get-electron-app-path.injectable";
|
|
import setElectronAppPathInjectable from "./set-electron-app-path/set-electron-app-path.injectable";
|
|
import directoryForIntegrationTestingInjectable from "./directory-for-integration-testing/directory-for-integration-testing.injectable";
|
|
import appPathsStateInjectable from "../../common/app-paths/app-paths-state.injectable";
|
|
import { pathNames } from "../../common/app-paths/app-path-names";
|
|
import { fromPairs, map } from "lodash/fp";
|
|
import { pipeline } from "@ogre-tools/fp";
|
|
import joinPathsInjectable from "../../common/path/join-paths.injectable";
|
|
import appNameInjectable from "../../common/vars/app-name.injectable";
|
|
import { beforeAnythingInjectionToken } from "@k8slens/application-for-electron-main";
|
|
|
|
const setupAppPathsInjectable = getInjectable({
|
|
id: "setup-app-paths",
|
|
|
|
instantiate: (di) => {
|
|
const setElectronAppPath = di.inject(setElectronAppPathInjectable);
|
|
const appName = di.inject(appNameInjectable);
|
|
const getElectronAppPath = di.inject(getElectronAppPathInjectable);
|
|
const appPathsState = di.inject(appPathsStateInjectable);
|
|
const directoryForIntegrationTesting = di.inject(directoryForIntegrationTestingInjectable);
|
|
const joinPaths = di.inject(joinPathsInjectable);
|
|
|
|
return {
|
|
id: "setup-app-paths",
|
|
run: () => {
|
|
if (directoryForIntegrationTesting) {
|
|
setElectronAppPath("appData", directoryForIntegrationTesting);
|
|
}
|
|
|
|
const appDataPath = getElectronAppPath("appData");
|
|
|
|
setElectronAppPath("userData", joinPaths(appDataPath, appName));
|
|
|
|
const appPaths = pipeline(
|
|
pathNames,
|
|
map(name => [name, getElectronAppPath(name)]),
|
|
fromPairs,
|
|
) as AppPaths;
|
|
|
|
appPathsState.set(appPaths);
|
|
|
|
// NOTE: this is the worse of two evils. This makes sure that `RunnableSync` always is sync
|
|
return undefined;
|
|
},
|
|
};
|
|
},
|
|
|
|
injectionToken: beforeAnythingInjectionToken,
|
|
});
|
|
|
|
export default setupAppPathsInjectable;
|