From e7b0181519c631cab0965c828a1b652098765364 Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Wed, 13 Sep 2023 16:27:02 -0300 Subject: [PATCH] feat(site): add support to .sh and .tpl files (#9674) --- .../TemplateFiles/TemplateFiles.tsx | 21 ++++++++++++++----- .../TemplateVersionPageView.stories.tsx | 2 ++ site/src/utils/templateVersion.ts | 12 ++++++++++- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/site/src/components/TemplateFiles/TemplateFiles.tsx b/site/src/components/TemplateFiles/TemplateFiles.tsx index 40b2cf8f1e..8688cb96b9 100644 --- a/site/src/components/TemplateFiles/TemplateFiles.tsx +++ b/site/src/components/TemplateFiles/TemplateFiles.tsx @@ -6,13 +6,17 @@ import { SyntaxHighlighter } from "components/SyntaxHighlighter/SyntaxHighlighte import { UseTabResult } from "hooks/useTab"; import { FC } from "react"; import { combineClasses } from "utils/combineClasses"; -import { TemplateVersionFiles } from "utils/templateVersion"; +import { AllowedExtension, TemplateVersionFiles } from "utils/templateVersion"; +import InsertDriveFileOutlined from "@mui/icons-material/InsertDriveFileOutlined"; -const iconByExtension: Record = { +const iconByExtension: Record = { tf: , md: , mkd: , Dockerfile: , + protobuf: , + sh: , + tpl: , }; const getExtension = (filename: string) => { @@ -24,11 +28,14 @@ const getExtension = (filename: string) => { return filename; }; -const languageByExtension: Record = { +const languageByExtension: Record = { tf: "hcl", md: "markdown", mkd: "markdown", Dockerfile: "dockerfile", + sh: "bash", + tpl: "tpl", + protobuf: "protobuf", }; export const TemplateFiles: FC<{ @@ -47,7 +54,7 @@ export const TemplateFiles: FC<{
{filenames.map((filename, index) => { const tabValue = index.toString(); - const extension = getExtension(filename); + const extension = getExtension(filename) as AllowedExtension; const icon = iconByExtension[extension]; const hasDiff = previousFiles && @@ -76,7 +83,11 @@ export const TemplateFiles: FC<{
); diff --git a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx index 4c945bc3f3..bdb92b89bc 100644 --- a/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx +++ b/site/src/pages/TemplateVersionPage/TemplateVersionPageView.stories.tsx @@ -40,6 +40,8 @@ const defaultArgs: TemplateVersionPageViewProps = { currentFiles: { "README.md": readmeContent, "main.tf": `{}`, + "some.tpl": `{{.Name}}`, + "some.sh": `echo "Hello world"`, }, }, }; diff --git a/site/src/utils/templateVersion.ts b/site/src/utils/templateVersion.ts index f0ebbdd4af..8433d3f884 100644 --- a/site/src/utils/templateVersion.ts +++ b/site/src/utils/templateVersion.ts @@ -23,7 +23,17 @@ export const getTemplateVersionFiles = async ( return files; }; -export const allowedExtensions = ["tf", "md", "Dockerfile", "protobuf"]; +export const allowedExtensions = [ + "tf", + "md", + "mkd", + "Dockerfile", + "protobuf", + "sh", + "tpl", +] as const; + +export type AllowedExtension = (typeof allowedExtensions)[number]; export const isAllowedFile = (name: string) => { return allowedExtensions.some((ext) => name.endsWith(ext));