diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 615a246c..90b3d98a 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -31,7 +31,7 @@ A CLI tool that simplifies creating React Native modules powered by Nitro Module ├── ios ├── src │ ├── index.ts -│ └── specs|views +│ └── specs │ └── awesome-library.nitro.ts │   ├── nitrogen │   ├── nitro.json diff --git a/src/cli/create.ts b/src/cli/create.ts index eb512d63..07f7c06e 100644 --- a/src/cli/create.ts +++ b/src/cli/create.ts @@ -174,18 +174,34 @@ const selectLanguages = async ( return selectedLangs } +const resolveViewLanguages = (platforms: SupportedPlatform[]) => { + const langs = new Set() + if (platforms.includes(SupportedPlatform.IOS)) { + langs.add(SupportedLang.SWIFT) + } + if (platforms.includes(SupportedPlatform.ANDROID)) { + langs.add(SupportedLang.KOTLIN) + } + return Array.from(langs) +} + const getUserAnswers = async ( name: string, usedPm?: PackageManager, options?: CreateModuleOptions ): Promise => { if (options?.ci) { + const platforms = [SupportedPlatform.IOS, SupportedPlatform.ANDROID] + const packageType = options?.packageType || Nitro.Module return { packageName: name, description: `${kleur.yellow(`react-native-${name}`)} is a react native package built with Nitro`, - platforms: [SupportedPlatform.IOS, SupportedPlatform.ANDROID], - packageType: options?.packageType || Nitro.Module, - langs: [SupportedLang.SWIFT, SupportedLang.KOTLIN], + platforms, + packageType, + langs: + packageType === Nitro.View + ? resolveViewLanguages(platforms) + : [SupportedLang.SWIFT, SupportedLang.KOTLIN], pm: usedPm || 'pnpm', } } @@ -264,11 +280,13 @@ const getUserAnswers = async ( if (!results.platforms || !results.packageType) { throw new Error('Missing required selections') } - const selectedLangs = await selectLanguages( + if (results.packageType === Nitro.View) { + return resolveViewLanguages(results.platforms) + } + return await selectLanguages( results.platforms, results.packageType ) - return selectedLangs }, pm: async () => { if (usedPm) { diff --git a/src/code-snippets/code.js.ts b/src/code-snippets/code.js.ts index b78e84c6..39b53e1c 100644 --- a/src/code-snippets/code.js.ts +++ b/src/code-snippets/code.js.ts @@ -93,7 +93,7 @@ import ${toPascalCase(moduleName)}Config from '../nitrogen/generated/shared/json import type { ${toPascalCase(moduleName)}Props, ${toPascalCase(moduleName)}Methods, -} from './views/${moduleName}.nitro' +} from './specs/${moduleName}.nitro' export const ${toPascalCase(moduleName)} = getHostComponent<${toPascalCase(moduleName)}Props, ${toPascalCase(moduleName)}Methods>( diff --git a/src/file-generators/js-file-generator.ts b/src/file-generators/js-file-generator.ts index 1545df9e..eb2b86c1 100644 --- a/src/file-generators/js-file-generator.ts +++ b/src/file-generators/js-file-generator.ts @@ -10,8 +10,7 @@ import { createFolder, createModuleFile, mapPlatformToLanguage } from '../utils' export class JSFileGenerator implements FileGenerator { async generate(config: GenerateModuleConfig): Promise { - const nitroSpecFolder = - config.packageType === Nitro.View ? '/src/views' : '/src/specs' + const nitroSpecFolder = '/src/specs' await createFolder(config.cwd, nitroSpecFolder) const platformToLangMap = mapPlatformToLanguage( @@ -41,7 +40,7 @@ export class JSFileGenerator implements FileGenerator { ): Promise { await createModuleFile( config.cwd, - `/src/views/${config.packageName}.nitro.ts`, + `/src/specs/${config.packageName}.nitro.ts`, nitroViewSpecCode(config.packageName, platformLang) ) await createModuleFile(