@@ -33,6 +33,7 @@ async function ask() {
3333 } ) ;
3434
3535 let specFileName ;
36+ let defaultSpecVersion ;
3637 if ( haveSpec ) {
3738 specFileName = ( await prompt ( {
3839 type : 'input' ,
@@ -42,6 +43,19 @@ async function ask() {
4243 return validateSpecFileName ( fileName ) ;
4344 }
4445 } ) ) . specFileName ;
46+ } else {
47+ defaultSpecVersion =
48+ ( await prompt ( {
49+ type : 'list' ,
50+ choices : [ 'OpenAPI 3' , 'OpenAPI 2' ] ,
51+ name : 'version' ,
52+ message : 'Select OpenAPI version:' ,
53+ validate ( fileName ) {
54+ return validateSpecFileName ( fileName ) ;
55+ }
56+ } ) ) . version === 'OpenAPI 3'
57+ ? '3.0.0'
58+ : '2.0' ;
4559 }
4660
4761 let spec ;
@@ -107,7 +121,8 @@ async function ask() {
107121 codeSamples,
108122 swaggerUI,
109123 travis,
110- repo
124+ repo,
125+ oasVersion : ( defaultSpecVersion || spec . openapi || spec . swagger ) . toString ( )
111126 } ;
112127}
113128
@@ -177,7 +192,9 @@ Choose another directory or remove contents.
177192
178193 let { specFileName } = opts ;
179194 if ( ! specFileName ) {
180- specFileName = require . resolve ( 'openapi-template' ) ;
195+ specFileName = require . resolve (
196+ opts . oasVersion . startsWith ( '3.' ) ? 'openapi-template/openapi.yaml' : 'openapi-template'
197+ ) ;
181198 }
182199
183200 process . chdir ( specRoot ) ;
@@ -190,7 +207,11 @@ Choose another directory or remove contents.
190207 await copy ( 'spec/README.md' ) ;
191208
192209 if ( opts . splitSpec ) {
193- copyDirSync ( 'spec/definitions' ) ;
210+ if ( opts . oasVersion . startsWith ( '3.' ) ) {
211+ copyDirSync ( 'spec/components' ) ;
212+ } else {
213+ copyDirSync ( 'spec/definitions' ) ;
214+ }
194215 copyDirSync ( 'spec/paths' ) ;
195216 }
196217
@@ -210,7 +231,7 @@ Choose another directory or remove contents.
210231
211232 console . log ( 'Installing packages. This might take a couple of minutes.\n' ) ;
212233
213- await installDeps ( '@^2.0.0-rc.2 ' ) ;
234+ await installDeps ( '@^2.0.0-rc.3 ' ) ;
214235 console . log ( ) ;
215236
216237 try {
0 commit comments