diff --git a/samples/codegen.sh b/samples/codegen.sh index 014f3e20..8f532f24 100755 --- a/samples/codegen.sh +++ b/samples/codegen.sh @@ -1,6 +1,6 @@ #!/bin/sh -rm -rf examples +rm -rf dist rm swagger-codegen-cli-v2.jar rm swagger-codegen-cli-v3.jar diff --git a/src/utils/isSubdirectory.ts b/src/utils/isSubdirectory.ts new file mode 100644 index 00000000..5a403fe8 --- /dev/null +++ b/src/utils/isSubdirectory.ts @@ -0,0 +1,5 @@ +import { relative } from 'path'; + +export function isSubDirectory(parent: string, child: string) { + return relative(child, parent).startsWith('..'); +} diff --git a/src/utils/writeClient.ts b/src/utils/writeClient.ts index a1006c6f..8041bfcc 100644 --- a/src/utils/writeClient.ts +++ b/src/utils/writeClient.ts @@ -3,6 +3,7 @@ import { resolve } from 'path'; import { Client } from '../client/interfaces/Client'; import { HttpClient } from '../index'; import { mkdir, rmdir } from './fileSystem'; +import { isSubDirectory } from './isSubdirectory'; import { Templates } from './registerHandlebarTemplates'; import { writeClientCore } from './writeClientCore'; import { writeClientIndex } from './writeClientIndex'; @@ -41,6 +42,10 @@ export async function writeClient( const outputPathSchemas = resolve(outputPath, 'schemas'); const outputPathServices = resolve(outputPath, 'services'); + if (!isSubDirectory(process.cwd(), output)) { + throw new Error(`Output folder is not a subdirectory of the current working directory`); + } + await rmdir(outputPath); await mkdir(outputPath);