Merge pull request #25452 from the-serious-programmer/feature/add-set-allowed-location-types
Added setAllowedLocationTypes with new CatalogLocationsExtensionPoint
This commit is contained in:
@@ -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 () => {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user