diff --git a/src/common/utils/get-binary-name.injectable.ts b/src/common/utils/get-binary-name.injectable.ts new file mode 100644 index 0000000000..39b28b0e3e --- /dev/null +++ b/src/common/utils/get-binary-name.injectable.ts @@ -0,0 +1,24 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; +import normalizedPlatformInjectable from "../vars/normalized-platform.injectable"; + +const binaryNameInjectable = getInjectable({ + id: "get-binary-name", + instantiate: (di, binaryName) => { + const normalizedPlatform = di.inject(normalizedPlatformInjectable); + + if (normalizedPlatform === "windows") { + return `${binaryName}.exe`; + } + + return binaryName; + }, + lifecycle: lifecycleEnum.keyedSingleton({ + getInstanceKey: (di, binaryName: string) => binaryName, + }), +}); + +export default binaryNameInjectable; diff --git a/src/main/helm/helm-binary-path.injectable.ts b/src/main/helm/helm-binary-path.injectable.ts index 6d8c661547..8197944edc 100644 --- a/src/main/helm/helm-binary-path.injectable.ts +++ b/src/main/helm/helm-binary-path.injectable.ts @@ -3,22 +3,19 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import { getBinaryName } from "../../common/vars"; -import normalizedPlatformInjectable from "../../common/vars/normalized-platform.injectable"; import baseBundledBinariesDirectoryInjectable from "../../common/vars/base-bundled-binaries-dir.injectable"; import joinPathsInjectable from "../../common/path/join-paths.injectable"; +import binaryNameInjectable from "../../common/utils/get-binary-name.injectable"; const helmBinaryPathInjectable = getInjectable({ id: "helm-binary-path", instantiate: (di) => { const joinPaths = di.inject(joinPathsInjectable); - const normalizedPlatform = di.inject(normalizedPlatformInjectable); + const binaryName = di.inject(binaryNameInjectable, "helm"); const baseBundledBinariesDirectory = di.inject(baseBundledBinariesDirectoryInjectable); - const helmBinaryName = getBinaryName("helm", { forPlatform: normalizedPlatform }); - - return joinPaths(baseBundledBinariesDirectory, helmBinaryName); + return joinPaths(baseBundledBinariesDirectory, binaryName); }, }); diff --git a/src/main/kube-auth-proxy/lens-k8s-proxy-path.injectable.ts b/src/main/kube-auth-proxy/lens-k8s-proxy-path.injectable.ts new file mode 100644 index 0000000000..b2ac74de39 --- /dev/null +++ b/src/main/kube-auth-proxy/lens-k8s-proxy-path.injectable.ts @@ -0,0 +1,21 @@ +/** + * 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 joinPathsInjectable from "../../common/path/join-paths.injectable"; +import binaryNameInjectable from "../../common/utils/get-binary-name.injectable"; +import baseBundledBinariesDirectoryInjectable from "../../common/vars/base-bundled-binaries-dir.injectable"; + +const lensK8sProxyPathInjectable = getInjectable({ + id: "lens-k8s-proxy-path", + instantiate: (di) => { + const joinPaths = di.inject(joinPathsInjectable); + const binaryName = di.inject(binaryNameInjectable, "lens-k8s-proxy"); + const baseBundledBinariesDirectory = di.inject(baseBundledBinariesDirectoryInjectable); + + return joinPaths(baseBundledBinariesDirectory, binaryName); + }, +}); + +export default lensK8sProxyPathInjectable; diff --git a/src/main/kubectl/binary-name.injectable.ts b/src/main/kubectl/binary-name.injectable.ts index 66b42a6007..5cc2f19f0c 100644 --- a/src/main/kubectl/binary-name.injectable.ts +++ b/src/main/kubectl/binary-name.injectable.ts @@ -3,17 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import normalizedPlatformInjectable from "../../common/vars/normalized-platform.injectable"; +import binaryNameInjectable from "../../common/utils/get-binary-name.injectable"; const kubectlBinaryNameInjectable = getInjectable({ id: "kubectl-binary-name", - instantiate: (di) => { - const platform = di.inject(normalizedPlatformInjectable); - - return platform === "windows" - ? "kubectl.exe" - : "kubectl"; - }, + instantiate: (di) => di.inject(binaryNameInjectable, "kubectl"), }); export default kubectlBinaryNameInjectable;