diff --git a/.changeset/famous-dolphins-laugh.md b/.changeset/famous-dolphins-laugh.md new file mode 100644 index 0000000000..18fef2ae5e --- /dev/null +++ b/.changeset/famous-dolphins-laugh.md @@ -0,0 +1,5 @@ +--- +"@redocly/cli": patch +--- + +Adjusted the `split` command to properly handle root-level paths. diff --git a/__tests__/split/root-endpoint/openapi.yaml b/__tests__/split/root-endpoint/openapi.yaml new file mode 100644 index 0000000000..1af9b9276c --- /dev/null +++ b/__tests__/split/root-endpoint/openapi.yaml @@ -0,0 +1,111 @@ +openapi: '3.0.0' +info: + version: 1.0.0 + title: Swagger Petstore + license: + name: MIT +servers: + - url: http://petstore.swagger.io/v1 +paths: + /: + get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: A paged array of pets + headers: + x-next: + description: A link to the next page of responses + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Pets' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + post: + summary: Create a pet + operationId: createPets + tags: + - pets + responses: + '201': + description: Null response + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /pets/{petId}: + get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' +components: + schemas: + Pet: + type: object + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string + Pets: + type: array + items: + $ref: '#/components/schemas/Pet' + Error: + type: object + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/__tests__/split/root-endpoint/snapshot.js b/__tests__/split/root-endpoint/snapshot.js new file mode 100644 index 0000000000..656991106f --- /dev/null +++ b/__tests__/split/root-endpoint/snapshot.js @@ -0,0 +1,119 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`E2E split with root endpoint 1`] = ` + +type: object +required: + - id + - name +properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string +type: array +items: + $ref: ./Pet.yaml +type: object +required: + - code + - message +properties: + code: + type: integer + format: int32 + message: + type: string +get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: A paged array of pets + headers: + x-next: + description: A link to the next page of responses + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Pets' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' +post: + summary: Create a pet + operationId: createPets + tags: + - pets + responses: + '201': + description: Null response + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' +get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' +openapi: 3.0.0 +info: + version: 1.0.0 + title: Swagger Petstore + license: + name: MIT +servers: + - url: http://petstore.swagger.io/v1 +paths: + /: + $ref: paths/pets.yaml + /pets/{petId}: + $ref: paths/pets/{petId}.yaml +🪓 Document: ../../../__tests__/split/root-endpoint/openapi.yaml is successfully split + and all related files are saved to the directory: output + +../../../__tests__/split/root-endpoint/openapi.yaml: split processed in ms + + +`; diff --git a/packages/cli/src/utils/miscellaneous.ts b/packages/cli/src/utils/miscellaneous.ts index 0acdbbe3c2..3cabc42d0f 100644 --- a/packages/cli/src/utils/miscellaneous.ts +++ b/packages/cli/src/utils/miscellaneous.ts @@ -130,6 +130,9 @@ export function printExecutionTime(commandName: string, startedAt: number, api: } export function pathToFilename(path: string, pathSeparator: string) { + if (path === '/') { + return pathSeparator; + } return path .replace(/~1/g, '/') .replace(/~0/g, '~')