) {
- return (
-
-
-
- )
+interface Params {
+ slug?: string[]
+}
+
+const TerraformDocs = async ({ params }: { params: Params }) => {
+ const { meta, ...data } = await getContent(params)
+
+ const options = {
+ mdxOptions: {
+ remarkPlugins: [remarkMkDocsAdmonition, remarkPyMdownTabs, [removeTitle, meta.title]],
+ rehypePlugins: [[linkTransform, urlTransform], rehypeSlug],
+ },
+ } as SerializeOptions
+
+ return
}
/**
@@ -88,7 +87,7 @@ const urlTransform: UrlTransformFunction = (url: string) => {
}
// If we don't have this page in our docs, link to GitHub repo
- return `https://github.com/${org}/${repo}/blob/${branch}${pathname}${hash}`
+ return `https://github.com/${terraformDocsOrg}/${terraformDocsRepo}/blob/${terraformDocsBranch}${pathname}${hash}`
} catch (err) {
console.error('Error transforming markdown URL', err)
return url
@@ -96,72 +95,47 @@ const urlTransform: UrlTransformFunction = (url: string) => {
}
/**
- * Fetch markdown from external repo and transform links
+ * Fetch markdown from external repo
*/
-export const getStaticProps = (async ({ params }) => {
- const [slug] = params.slug ?? []
- const page = pageMap.find((page) => page.slug === slug)
+const getContent = async ({ slug }: Params) => {
+ const [requestedSlug] = slug ?? []
+ const page = pageMap.find((page) => page.slug === requestedSlug)
if (!page) {
- throw new Error(`No page mapping found for slug '${slug}'`)
+ redirect(notFoundLink('platform/terraform' + (slug?.join('/') ?? '')))
}
const { meta, remoteFile, useRoot } = page
- let response = await fetch(
- `https://raw.githubusercontent.com/${org}/${repo}/${branch}/${useRoot ? '' : `${docsDir}/`}${remoteFile}`
+ const editLink = newEditLink(
+ `${terraformDocsOrg}/${terraformDocsRepo}/blob/${terraformDocsBranch}/${useRoot ? '' : `${terraformDocsDocsDir}/`}${remoteFile}`
)
- let content = await response.text()
+ let response = await fetch(
+ `https://raw.githubusercontent.com/${terraformDocsOrg}/${terraformDocsRepo}/${terraformDocsBranch}/${useRoot ? '' : `${terraformDocsDocsDir}/`}${remoteFile}`
+ )
+
+ let rawContent = await response.text()
// Strip out HTML comments
- content = content.replace(//, '')
- const { content: source, data } = matter(content)
+ rawContent = rawContent.replace(//, '')
+ const { content, data } = matter(rawContent)
Object.assign(meta, data)
if (!isValidGuideFrontmatter(meta)) {
throw Error('Guide frontmatter is invalid.')
}
- const codeHikeOptions: CodeHikeConfig = {
- theme: codeHikeTheme,
- lineNumbers: true,
- showCopyButton: true,
- skipLanguages: [],
- autoImport: false,
- }
-
- const mdxSource = await serialize(source, {
- scope: {
- chCodeConfig: codeHikeOptions,
- },
- mdxOptions: {
- remarkPlugins: [
- remarkGfm,
- remarkMkDocsAdmonition,
- remarkPyMdownTabs,
- [removeTitle, meta.title],
- [remarkCodeHike, codeHikeOptions],
- ],
- rehypePlugins: [[linkTransform, urlTransform], rehypeSlug],
- },
- })
-
return {
- props: {
- source: mdxSource,
- meta,
- editLink: `${org}/${repo}/blob/${branch}/${docsDir}/${slug}.md`,
- },
+ pathname:
+ `/guides/platform/terraform${slug?.length ? `/${slug.join('/')}` : ''}` satisfies `/${string}`,
+ meta,
+ content,
+ editLink,
}
-}) satisfies GetStaticProps
+}
-export const getStaticPaths = (async () => {
- return {
- paths: pageMap.map(({ slug }) => ({
- params: {
- slug: slug ? [slug] : [],
- },
- })),
- fallback: false,
- }
-}) satisfies GetStaticPaths
+const generateStaticParams = async () => pageMap.map(({ slug }) => ({ slug: slug ? [slug] : [] }))
+const generateMetadata = genGuideMeta(getContent)
+
+export default TerraformDocs
+export { generateStaticParams, generateMetadata }
diff --git a/apps/docs/pages/guides/platform/terraform/reference.tsx b/apps/docs/app/guides/platform/terraform/reference/page.tsx
similarity index 88%
rename from apps/docs/pages/guides/platform/terraform/reference.tsx
rename to apps/docs/app/guides/platform/terraform/reference/page.tsx
index 8004ab606c9..0268a3a21d7 100644
--- a/apps/docs/pages/guides/platform/terraform/reference.tsx
+++ b/apps/docs/app/guides/platform/terraform/reference/page.tsx
@@ -1,22 +1,33 @@
import { codeBlock } from 'common-tags'
-import { GetStaticProps, InferGetStaticPropsType } from 'next'
+import { Check, PlusCircle } from 'lucide-react'
import Link from 'next/link'
import ReactMarkdown from 'react-markdown'
-
import {
CodeBlock,
Heading,
- IconCheck,
- IconPlusCircle,
PopoverContent_Shadcn_,
PopoverTrigger_Shadcn_,
Popover_Shadcn_,
- Tabs,
} from 'ui'
+import { genGuideMeta } from '~/features/docs/GuidesMdx.utils'
+import { GuideTemplate, newEditLink } from '~/features/docs/GuidesMdx.template'
+import { TabPanel, Tabs } from '~/features/ui/Tabs'
+import {
+ terraformDocsBranch,
+ terraformDocsDocsDir,
+ terraformDocsOrg,
+ terraformDocsRepo,
+} from '../terraformConstants'
-import { MenuId } from '~/components/Navigation/NavigationMenu/NavigationMenu'
-import Layout from '~/layouts/DefaultGuideLayout'
-import { org, repo, branch, docsDir } from './[[...slug]]'
+const meta = {
+ title: 'Terraform Provider reference',
+ subtitle: 'Resources and data sources available through the Terraform Provider',
+}
+
+const generateMetadata = genGuideMeta(() => ({
+ pathname: '/guides/platform/terraform/reference',
+ meta,
+}))
function ProviderSettings({ schema }: { schema: any }) {
const attributes = schema.block.attributes
@@ -63,7 +74,7 @@ function ProviderSettings({ schema }: { schema: any }) {
|
{attributes[attribute].optional && (
<>
-
+
true
>
)}
@@ -71,7 +82,7 @@ function ProviderSettings({ schema }: { schema: any }) {
|
{attributes[attribute].sensitive && (
<>
-
+
true
>
)}
@@ -92,7 +103,7 @@ function Resources({ schema }: { schema: any }) {
You can configure these resources using the Supabase Terraform provider:
{Object.keys(schema).map((resource) => (
-
+
Example usage
{codeBlock`
resource "${resource}" " |