Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
28 changes: 23 additions & 5 deletions src/cli/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,18 +174,34 @@ const selectLanguages = async (
return selectedLangs
}

const resolveViewLanguages = (platforms: SupportedPlatform[]) => {
const langs = new Set<SupportedLang>()
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<UserAnswers> => {
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',
}
}
Expand Down Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion src/code-snippets/code.js.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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>(
Expand Down
5 changes: 2 additions & 3 deletions src/file-generators/js-file-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ import { createFolder, createModuleFile, mapPlatformToLanguage } from '../utils'

export class JSFileGenerator implements FileGenerator {
async generate(config: GenerateModuleConfig): Promise<void> {
const nitroSpecFolder =
config.packageType === Nitro.View ? '/src/views' : '/src/specs'
const nitroSpecFolder = '/src/specs'

await createFolder(config.cwd, nitroSpecFolder)
const platformToLangMap = mapPlatformToLanguage(
Expand Down Expand Up @@ -41,7 +40,7 @@ export class JSFileGenerator implements FileGenerator {
): Promise<void> {
await createModuleFile(
config.cwd,
`/src/views/${config.packageName}.nitro.ts`,
`/src/specs/${config.packageName}.nitro.ts`,
nitroViewSpecCode(config.packageName, platformLang)
)
await createModuleFile(
Expand Down
Loading