From bcde59da54b80f19815afd21e6f354e8010d8a1c Mon Sep 17 00:00:00 2001 From: sand4rt Date: Fri, 13 Jan 2023 18:37:58 +0100 Subject: [PATCH] feat(ct): generate playwright/index.[tj]sx --- src/generator.ts | 4 ++-- src/utils.ts | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/generator.ts b/src/generator.ts index 258d3a1..4925e46 100644 --- a/src/generator.ts +++ b/src/generator.ts @@ -19,7 +19,7 @@ import fs from 'fs'; import { prompt } from 'enquirer'; import colors from 'ansi-colors'; -import { executeCommands, createFiles, executeTemplate, Command, languageToFileExtension } from './utils'; +import { executeCommands, createFiles, executeTemplate, Command, languageToFileExtension, getFileExtensionCT } from './utils'; import { packageManager } from './packageManager'; export type PromptOptions = { @@ -192,7 +192,7 @@ export class Generator { command: packageManager.installDevDependency(`${ctPackageName}${packageTag}`), }); - const extension = languageToFileExtension(answers.language); + const extension = getFileExtensionCT(answers.language, answers.framework); const htmlTemplate = executeTemplate(this._readAsset(path.join('playwright', 'index.html')), { extension }, new Map()); files.set('playwright/index.html', htmlTemplate); diff --git a/src/utils.ts b/src/utils.ts index 58605ee..a9dcbd4 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -20,6 +20,7 @@ import path from 'path'; import { prompt } from 'enquirer'; import colors from 'ansi-colors'; +import { PromptOptions } from './generator'; export type Command = { command: string; @@ -80,7 +81,18 @@ export function executeTemplate(input: string, args: Record, sec return result.join('\n'); } -export function languageToFileExtension(language: 'JavaScript' | 'TypeScript'): 'js' | 'ts' { +export function getFileExtensionCT(language: PromptOptions['language'], framework: PromptOptions['framework']) { + const isJsxFramework = framework === 'solid' || framework === 'react'; + if (isJsxFramework && language === 'JavaScript') + return 'jsx'; + else if (isJsxFramework && language === 'TypeScript') + return 'tsx'; + else if (language === 'TypeScript') + return 'ts'; + return 'js'; +} + +export function languageToFileExtension(language: PromptOptions['language']): 'js' | 'ts' { return language === 'JavaScript' ? 'js' : 'ts'; }