import {
Box,
Flex,
FlexProps,
Collapse,
useDisclosure,
} from "@chakra-ui/react";
import type { Assembly } from "@jsii/spec";
import type { Language as PrismLanguage } from "prism-react-renderer";
import type { FunctionComponent } from "react";
import { ToggleButton } from "./ToggleButton";
import { Code } from "../../../components/Code";
import { Language } from "../../../constants/languages";
import { usePackageState } from "../PackageState";
const getCodeSample = ({
language,
assembly,
}: {
language: Language;
assembly: Assembly;
}): string | undefined => {
const version = assembly.version;
if (language === Language.TypeScript) {
const packageName = assembly.name;
return `npm install ${packageName}@${version}`;
} else if (language === Language.Python) {
const packageName = assembly.targets?.python?.distName;
if (!packageName) {
return undefined;
}
return `pip install ${packageName}==${version}`;
} else if (language === Language.Java) {
const groupId = assembly.targets?.java?.maven?.groupId;
const artifactId = assembly.targets?.java?.maven?.artifactId;
if (!groupId || !artifactId) return undefined;
return [
"// add this to your pom.xml",
"",
` ${groupId}`,
` ${artifactId}`,
` ${version}`,
"",
].join("\n");
} else if (language === Language.DotNet) {
const packageId = assembly.targets?.dotnet?.packageId;
if (!packageId) return undefined;
return `dotnet add package ${packageId} --version ${version}`;
} else if (language === Language.Go) {
const repositoryUrl = assembly?.targets?.go?.moduleName;
if (!repositoryUrl) return undefined;
return `go get ${repositoryUrl}`;
}
return undefined;
};
export const Install: FunctionComponent = (props) => {
const {
language,
assembly: { data: assembly },
} = usePackageState();
const collapse = useDisclosure();
if (!assembly) return null;
const code = getCodeSample({ language, assembly });
if (!code || !language) return null;
return (
{language === Language.Java ? (
<>
>
) : (
)}
);
};