Added setAllowedLocationTypes with new CatalogLocationsExtensionPoint

Signed-off-by: The serious programmer <19777147+the-serious-programmer@users.noreply.github.com>
Signed-off-by: 1337 <19777147+the-serious-programmer@users.noreply.github.com>
This commit is contained in:
1337
2024-06-27 17:26:29 +00:00
parent 5d3f21abbd
commit a629fb2291
5 changed files with 61 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-catalog-backend': patch
'@backstage/plugin-catalog-node': patch
---
Added setAllowedLocationTypes while introducing a new extension point called CatalogLocationsExtensionPoint
@@ -28,6 +28,8 @@ import {
catalogPermissionExtensionPoint,
CatalogProcessingExtensionPoint,
catalogProcessingExtensionPoint,
CatalogLocationsExtensionPoint,
catalogLocationsExtensionPoint,
} from '@backstage/plugin-catalog-node/alpha';
import {
CatalogProcessor,
@@ -41,6 +43,20 @@ import { merge } from 'lodash';
import { Permission } from '@backstage/plugin-permission-common';
import { ForwardedError } from '@backstage/errors';
class CatalogLocationsExtensionPointImpl
implements CatalogLocationsExtensionPoint
{
#locationTypes = new Array<string>();
setAllowedLocationTypes(locationTypes: Array<string>) {
this.#locationTypes = locationTypes;
}
get allowedLocationTypes() {
return this.#locationTypes;
}
}
class CatalogProcessingExtensionPointImpl
implements CatalogProcessingExtensionPoint
{
@@ -199,6 +215,12 @@ export const catalogPlugin = createBackendPlugin({
const modelExtensions = new CatalogModelExtensionPointImpl();
env.registerExtensionPoint(catalogModelExtensionPoint, modelExtensions);
const locationTypeExtensions = new CatalogLocationsExtensionPointImpl();
env.registerExtensionPoint(
catalogLocationsExtensionPoint,
locationTypeExtensions,
);
env.registerInit({
deps: {
logger: coreServices.logger,
@@ -271,6 +293,10 @@ export const catalogPlugin = createBackendPlugin({
builder.addPermissionRules(...permissionExtensions.permissionRules);
builder.setFieldFormatValidators(modelExtensions.fieldValidators);
builder.setAllowedLocationTypes(
locationTypeExtensions.allowedLocationTypes,
);
const { processingEngine, router } = await builder.build();
lifecycle.addStartupHook(async () => {
+8
View File
@@ -34,6 +34,14 @@ export interface CatalogAnalysisExtensionPoint {
// @alpha (undocumented)
export const catalogAnalysisExtensionPoint: ExtensionPoint<CatalogAnalysisExtensionPoint>;
// @alpha (undocumented)
export interface CatalogLocationsExtensionPoint {
setAllowedLocationTypes(locationTypes: Array<string>): void;
}
// @alpha (undocumented)
export const catalogLocationsExtensionPoint: ExtensionPoint<CatalogLocationsExtensionPoint>;
// @alpha (undocumented)
export interface CatalogModelExtensionPoint {
setEntityDataParser(parser: CatalogProcessorParser): void;
+2
View File
@@ -15,6 +15,8 @@
*/
export { catalogServiceRef } from './catalogService';
export type { CatalogLocationsExtensionPoint } from './extensions';
export { catalogLocationsExtensionPoint } from './extensions';
export type { CatalogProcessingExtensionPoint } from './extensions';
export { catalogProcessingExtensionPoint } from './extensions';
export type { CatalogAnalysisExtensionPoint } from './extensions';
+19
View File
@@ -31,6 +31,25 @@ import {
} from '@backstage/plugin-permission-common';
import { PermissionRule } from '@backstage/plugin-permission-node';
/**
* @alpha
*/
export interface CatalogLocationsExtensionPoint {
/**
* Allows setting custom location types, such as showcased in: https://backstage.io/docs/features/software-catalog/external-integrations/#creating-a-catalog-data-reader-processor
* @param locationTypes - List of location types to allow, default is "url" and "file"
*/
setAllowedLocationTypes(locationTypes: Array<string>): void;
}
/**
* @alpha
*/
export const catalogLocationsExtensionPoint =
createExtensionPoint<CatalogLocationsExtensionPoint>({
id: 'catalog.locations',
});
/**
* @alpha
*/