@@ -56,8 +56,7 @@ export default async function create(argv: yargs.Arguments<any>) {
5656 authorEmail,
5757 authorUrl,
5858 githubUrl : repo ,
59- native,
60- cpp,
59+ type,
6160 } = ( await inquirer . prompt ( [
6261 {
6362 type : 'input' ,
@@ -126,17 +125,18 @@ export default async function create(argv: yargs.Arguments<any>) {
126125 validate : ( input ) => / ^ h t t p s ? : \/ \/ / . test ( input ) || 'Must be a valid URL' ,
127126 } ,
128127 {
129- type : 'confirm' ,
130- name : 'native' ,
131- message : 'Do you want to use Java or Objective-C code?' ,
132- default : true ,
133- } ,
134- {
135- type : 'confirm' ,
136- name : 'cpp' ,
137- message : 'Do you want to use C++ code?' ,
138- default : false ,
139- when : ( response ) => response . native ,
128+ type : 'list' ,
129+ name : 'type' ,
130+ message : 'What type of package do you want to develop?' ,
131+ choices : [
132+ { name : 'Native module in Kotlin and Objective-C' , value : 'native' } ,
133+ { name : 'Native module with C++ code' , value : 'cpp' } ,
134+ {
135+ name : 'JavaScript module with Web support using Expo' ,
136+ value : 'expo' ,
137+ } ,
138+ ] ,
139+ default : 'native' ,
140140 } ,
141141 ] ) ) as {
142142 slug : string ;
@@ -145,8 +145,7 @@ export default async function create(argv: yargs.Arguments<any>) {
145145 authorEmail : string ;
146146 authorUrl : string ;
147147 githubUrl : string ;
148- native : boolean ;
149- cpp : boolean ;
148+ type : 'native' | 'cpp' | 'expo' ;
150149 } ;
151150
152151 const project = slug . replace ( / ^ ( r e a c t - n a t i v e - | @ [ ^ / ] + \/ ) / , '' ) ;
@@ -165,8 +164,8 @@ export default async function create(argv: yargs.Arguments<any>) {
165164 . slice ( 1 ) } `,
166165 package : slug . replace ( / [ ^ a - z 0 - 9 ] / g, '' ) . toLowerCase ( ) ,
167166 podspec : slug . replace ( / [ ^ a - z 0 - 9 ] + / g, '-' ) . replace ( / ^ - / , '' ) ,
168- native,
169- cpp,
167+ native : type === 'native' || type === 'cpp' ,
168+ cpp : type === 'cpp' ,
170169 } ,
171170 author : {
172171 name : authorName ,
@@ -201,16 +200,16 @@ export default async function create(argv: yargs.Arguments<any>) {
201200
202201 await copyDir ( COMMON_FILES , folder ) ;
203202
204- if ( native ) {
205- await copyDir ( NATIVE_FILES , folder ) ;
206- } else {
203+ if ( type === 'expo' ) {
207204 await copyDir ( EXPO_FILES , folder ) ;
208- }
209-
210- if ( cpp ) {
211- await copyDir ( CPP_FILES , folder ) ;
212205 } else {
213- await copyDir ( OBJC_FILES , folder ) ;
206+ await copyDir ( NATIVE_FILES , folder ) ;
207+
208+ if ( type === 'cpp' ) {
209+ await copyDir ( CPP_FILES , folder ) ;
210+ } else {
211+ await copyDir ( OBJC_FILES , folder ) ;
212+ }
214213 }
215214
216215 try {
@@ -226,7 +225,7 @@ export default async function create(argv: yargs.Arguments<any>) {
226225 const platforms = {
227226 ios : { name : 'iOS' , color : 'cyan' } ,
228227 android : { name : 'Android' , color : 'green' } ,
229- ...( native ? null : { web : { name : 'Web' , color : 'blue' } } ) ,
228+ ...( type === 'expo' ? { web : { name : 'Web' , color : 'blue' } } : null ) ,
230229 } ;
231230
232231 console . log (
0 commit comments