From 3adaf88db203f6293af07ef4f33f8a4203d6e970 Mon Sep 17 00:00:00 2001 From: Julio Zynger Date: Wed, 20 Oct 2021 18:19:32 +0200 Subject: [PATCH 1/2] Use parser to read files Fix https://github.com/backstage/backstage/issues/7706 Signed-off-by: Julio Zynger --- .changeset/hip-pens-love.md | 5 +++++ .../processors/FileReaderProcessor.test.ts | 6 ++++-- .../ingestion/processors/FileReaderProcessor.ts | 17 ++++++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 .changeset/hip-pens-love.md diff --git a/.changeset/hip-pens-love.md b/.changeset/hip-pens-love.md new file mode 100644 index 0000000000..d1549789bf --- /dev/null +++ b/.changeset/hip-pens-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Take CatalogParser in account when processing file locations. diff --git a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.test.ts b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.test.ts index 8a5f202e5e..c2cce66bc6 100644 --- a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.test.ts +++ b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.test.ts @@ -21,6 +21,7 @@ import { CatalogProcessorResult, } from './types'; import path from 'path'; +import { defaultEntityDataParser } from './util/parse'; describe('FileReaderProcessor', () => { const fixturesRoot = path.join(__dirname, '__fixtures__/fileReaderProcessor'); @@ -33,7 +34,7 @@ describe('FileReaderProcessor', () => { }; const generated = (await new Promise(emit => - processor.readLocation(spec, false, emit), + processor.readLocation(spec, false, emit, defaultEntityDataParser), )) as CatalogProcessorEntityResult; expect(generated.type).toBe('entity'); @@ -49,7 +50,7 @@ describe('FileReaderProcessor', () => { }; const generated = (await new Promise(emit => - processor.readLocation(spec, false, emit), + processor.readLocation(spec, false, emit, defaultEntityDataParser), )) as CatalogProcessorErrorResult; expect(generated.type).toBe('error'); @@ -69,6 +70,7 @@ describe('FileReaderProcessor', () => { { type: 'file', target: `${path.join(fixturesRoot, '**', '*.yaml')}` }, false, emit, + defaultEntityDataParser, ); expect(emit).toBeCalledTimes(2); diff --git a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts index 5f6e739bdd..9ff3f52ba0 100644 --- a/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts +++ b/plugins/catalog-backend/src/ingestion/processors/FileReaderProcessor.ts @@ -20,8 +20,11 @@ import g from 'glob'; import path from 'path'; import { promisify } from 'util'; import * as result from './results'; -import { CatalogProcessor, CatalogProcessorEmit } from './types'; -import { parseEntityYaml } from './util/parse'; +import { + CatalogProcessor, + CatalogProcessorEmit, + CatalogProcessorParser, +} from './types'; const glob = promisify(g); @@ -30,6 +33,7 @@ export class FileReaderProcessor implements CatalogProcessor { location: LocationSpec, optional: boolean, emit: CatalogProcessorEmit, + parser: CatalogProcessorParser, ): Promise { if (location.type !== 'file') { return false; @@ -44,9 +48,12 @@ export class FileReaderProcessor implements CatalogProcessor { // The normalize converts to native slashes; the glob library returns // forward slashes even on windows - for (const parseResult of parseEntityYaml(data, { - type: 'file', - target: path.normalize(fileMatch), + for await (const parseResult of parser({ + data: data, + location: { + type: 'file', + target: path.normalize(fileMatch), + }, })) { emit(parseResult); } From a7217649ac52777c5771554a0e72c67dadf94c94 Mon Sep 17 00:00:00 2001 From: Julio Zynger Date: Wed, 20 Oct 2021 18:47:23 +0200 Subject: [PATCH 2/2] Update api-report.md changes Signed-off-by: Julio Zynger --- plugins/catalog-backend/api-report.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 6b7d966b28..a3860d2dca 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -966,6 +966,7 @@ export class FileReaderProcessor implements CatalogProcessor { location: LocationSpec, optional: boolean, emit: CatalogProcessorEmit, + parser: CatalogProcessorParser, ): Promise; }