1- import { pascal } from 'case' ;
2- import { writeFileSync } from 'fs' ;
3- import { basename , dirname , join } from 'path' ;
1+ import { camel , pascal } from 'case' ;
2+ import { existsSync , mkdirSync , writeFileSync } from 'fs' ;
3+ import { join } from 'path' ;
44import { OutputOptions } from '../../types' ;
55import { WriteSpecsProps } from '../../types/writers' ;
6+ import { getFileInfo } from '../../utils/file' ;
67import { getFilesHeader } from '../../utils/messages/inline' ;
78import { generateImports } from '../generators/imports' ;
89import { generateModelsInline } from '../generators/modelsInline' ;
@@ -15,7 +16,15 @@ export const writeSplitMode = ({
1516 info,
1617 output
1718} : WriteSpecsProps & { output : OutputOptions } ) => {
18- const path = output . target ! ;
19+ const { path, filename, dirname, extension} = getFileInfo (
20+ output . target ,
21+ camel ( info . title )
22+ ) ;
23+
24+ if ( ! existsSync ( dirname ) ) {
25+ mkdirSync ( dirname ) ;
26+ }
27+
1928 const {
2029 definition,
2130 imports,
@@ -29,9 +38,6 @@ export const writeSplitMode = ({
2938 let implementationData = header ;
3039 let mockData = header ;
3140
32- const filename = basename ( path , '.ts' ) ;
33- const dir = dirname ( path ) ;
34-
3541 definitionData += "import { AxiosPromise } from 'axios'\n" ;
3642
3743 const definitionPath = './' + filename + '.definition' ;
@@ -54,7 +60,7 @@ export const writeSplitMode = ({
5460 const schemasPath = './' + filename + '.schemas' ;
5561 const schemasData = header + generateModelsInline ( schemas ) ;
5662
57- writeFileSync ( join ( dir , schemasPath + '.ts' ) , schemasData ) ;
63+ writeFileSync ( join ( dirname , schemasPath + extension ) , schemasData ) ;
5864
5965 definitionData += generateImports ( imports , schemasPath , true ) ;
6066 implementationData += generateImports ( imports , schemasPath , true ) ;
@@ -66,11 +72,11 @@ export const writeSplitMode = ({
6672 mockData += implementationMocks ;
6773
6874 if ( path ) {
69- writeFileSync ( join ( dir , definitionPath + '.ts' ) , definitionData ) ;
70- writeFileSync ( join ( dir , filename + '.ts' ) , implementationData ) ;
75+ writeFileSync ( join ( dirname , definitionPath + extension ) , definitionData ) ;
76+ writeFileSync ( join ( dirname , filename + extension ) , implementationData ) ;
7177
7278 if ( output . mock ) {
73- writeFileSync ( join ( dir , filename + '.mock.ts' ) , mockData ) ;
79+ writeFileSync ( join ( dirname , filename + '.mock' + extension ) , mockData ) ;
7480 }
7581 }
7682} ;
0 commit comments