@@ -19,6 +19,7 @@ import { getRefs } from './ref';
1919import { convertRoutesToOpenAPI } from './openapi' ;
2020import type { Route } from './route' ;
2121import type { Schema } from './ir' ;
22+ import { getPackageJsonPath } from './packageInfo' ;
2223import { Project } from './project' ;
2324import { KNOWN_IMPORTS } from './knownImports' ;
2425import { findSymbolInitializer } from './resolveInit' ;
@@ -33,34 +34,16 @@ const app = command({
3334 displayName : 'file' ,
3435 } ) ,
3536 name : option ( {
36- type : string ,
37+ type : optional ( string ) ,
3738 description : 'API name' ,
3839 long : 'name' ,
3940 short : 'n' ,
40- defaultValue : ( ) => {
41- const pkgFile = p . join ( process . cwd ( ) , 'package.json' ) ;
42- try {
43- const pkgJson = fs . readFileSync ( pkgFile , 'utf-8' ) ;
44- return JSON . parse ( pkgJson ) [ 'name' ] ?? 'openapi-generator' ;
45- } catch ( err ) {
46- return 'openapi-generator' ;
47- }
48- } ,
4941 } ) ,
5042 version : option ( {
51- type : string ,
43+ type : optional ( string ) ,
5244 description : 'API version' ,
5345 long : 'version' ,
5446 short : 'v' ,
55- defaultValue : ( ) => {
56- const pkgFile = p . join ( process . cwd ( ) , 'package.json' ) ;
57- try {
58- const pkgJson = fs . readFileSync ( pkgFile , 'utf-8' ) ;
59- return JSON . parse ( pkgJson ) [ 'version' ] ?? '0.0.1' ;
60- } catch ( err ) {
61- return '0.0.1' ;
62- }
63- } ,
6447 } ) ,
6548 includeInternal : flag ( {
6649 type : boolean ,
@@ -74,12 +57,35 @@ const app = command({
7457 description : 'Custom codec definition file' ,
7558 long : 'codec-file' ,
7659 short : 'c' ,
77- defaultValue : ( ) => undefined ,
7860 } ) ,
7961 } ,
80- handler : async ( { input, name, version, codecFile } ) => {
62+ handler : async ( {
63+ input,
64+ name : nameParam ,
65+ version : versionParam ,
66+ codecFile : codecFileParam ,
67+ } ) => {
8168 const filePath = p . resolve ( input ) ;
8269
70+ const packageJsonPath = await getPackageJsonPath ( filePath ) ;
71+ let packageJson : Record < string , any > = { } ;
72+ if ( packageJsonPath !== undefined ) {
73+ packageJson = JSON . parse ( fs . readFileSync ( packageJsonPath , 'utf-8' ) ) ;
74+ }
75+
76+ const name = nameParam ?? packageJson [ 'name' ] ?? 'openapi-generator' ;
77+ const version = versionParam ?? packageJson [ 'version' ] ?? '0.0.1' ;
78+
79+ let codecFile : string | undefined = codecFileParam ;
80+ if (
81+ codecFileParam === undefined &&
82+ packageJsonPath !== undefined &&
83+ packageJson [ 'openapi-generator' ] ?. [ 'codec-file' ] !== undefined
84+ ) {
85+ const relativeCodecFilePath = packageJson [ 'openapi-generator' ] [ 'codec-file' ] ;
86+ codecFile = p . join ( p . dirname ( packageJsonPath ) , relativeCodecFilePath ) ;
87+ }
88+
8389 let knownImports = KNOWN_IMPORTS ;
8490 if ( codecFile !== undefined ) {
8591 const codecFilePath = p . resolve ( codecFile ) ;
0 commit comments