/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import React, { useState } from "react"; import { observer } from "mobx-react"; import { Input, InputValidators } from "../input"; import { SubTitle } from "../layout/sub-title"; import type { UserStore } from "../../../common/user-store"; import type { SelectOption } from "../select"; import { Select } from "../select"; import { Switch } from "../switch"; import { packageMirrors } from "../../../common/user-store/preferences-helpers"; import directoryForBinariesInjectable from "../../../common/app-paths/directory-for-binaries/directory-for-binaries.injectable"; import { withInjectables } from "@ogre-tools/injectable-react"; import userStoreInjectable from "../../../common/user-store/user-store.injectable"; import directoryForKubectlBinariesInjectable from "../../../common/app-paths/directory-for-kubectl-binaries/directory-for-kubectl-binaries.injectable"; interface Dependencies { defaultPathForGeneralBinaries: string; defaultPathForKubectlBinaries: string; userStore: UserStore; } const NonInjectedKubectlBinaries: React.FC = observer( ({ defaultPathForGeneralBinaries, defaultPathForKubectlBinaries, userStore }) => { const [downloadPath, setDownloadPath] = useState( userStore.downloadBinariesPath || "", ); const [binariesPath, setBinariesPath] = useState( userStore.kubectlBinariesPath || "", ); const pathValidator = downloadPath ? InputValidators.isPath : undefined; const downloadMirrorOptions: SelectOption[] = Array.from( packageMirrors.entries(), ([value, { label, platforms }]) => ({ value, label, platforms }), ); const save = () => { userStore.downloadBinariesPath = downloadPath; userStore.kubectlBinariesPath = binariesPath; }; return ( <>
userStore.downloadKubectlBinaries = !userStore.downloadKubectlBinaries} > Download kubectl binaries matching the Kubernetes cluster version
The directory to download binaries into.
); }, ); export const KubectlBinaries = withInjectables( NonInjectedKubectlBinaries, { getProps: (di) => ({ defaultPathForGeneralBinaries: di.inject(directoryForBinariesInjectable), defaultPathForKubectlBinaries: di.inject(directoryForKubectlBinariesInjectable), userStore: di.inject(userStoreInjectable), }), }, );