chore: Move catalogPlugin to catalog-backend

Signed-off-by: Johan Haals <johan.haals@gmail.com>
This commit is contained in:
Johan Haals
2022-07-06 11:06:17 +02:00
committed by Patrik Oldsberg
parent 0d71831aae
commit 699881cdd9
5 changed files with 128 additions and 84 deletions
+4 -84
View File
@@ -14,94 +14,14 @@
* limitations under the License.
*/
import { createBackend } from '@backstage/backend-app-api';
import { createBackendModule } from '@backstage/backend-plugin-api';
import {
createBackend,
loggerToWinstonLogger,
} from '@backstage/backend-app-api';
import {
configServiceRef,
createBackendModule,
createBackendPlugin,
createServiceRef,
databaseServiceRef,
loggerServiceRef,
permissionsServiceRef,
urlReaderServiceRef,
httpRouterServiceRef,
} from '@backstage/backend-plugin-api';
import {
CatalogBuilder,
CatalogProcessor,
catalogPlugin,
catalogProcessingInitApiRef,
} from '@backstage/plugin-catalog-backend';
import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend';
interface CatalogProcessingInitApi {
addProcessor(processor: CatalogProcessor): void;
}
export const catalogProcessingInitApiRef =
createServiceRef<CatalogProcessingInitApi>({
id: 'catalog.processing',
});
class CatalogExtensionPointImpl implements CatalogProcessingInitApi {
#processors = new Array<CatalogProcessor>();
addProcessor(processor: CatalogProcessor): void {
this.#processors.push(processor);
}
get processors() {
return this.#processors;
}
}
export const catalogPlugin = createBackendPlugin({
id: 'catalog',
register(env) {
const processingExtensions = new CatalogExtensionPointImpl();
// plugins depending on this API will be initialized before this plugins init method is executed.
env.registerExtensionPoint(
catalogProcessingInitApiRef,
processingExtensions,
);
env.registerInit({
deps: {
logger: loggerServiceRef,
config: configServiceRef,
reader: urlReaderServiceRef,
permissions: permissionsServiceRef,
database: databaseServiceRef,
httpRouter: httpRouterServiceRef,
},
async init({
logger,
config,
reader,
database,
permissions,
httpRouter,
}) {
const winstonLogger = loggerToWinstonLogger(logger);
const builder = await CatalogBuilder.create({
config,
reader,
permissions,
database,
logger: winstonLogger,
});
builder.addProcessor(...processingExtensions.processors);
const { processingEngine, router } = await builder.build();
await processingEngine.start();
httpRouter.use(router);
},
});
},
});
export const scaffolderCatalogExtension = createBackendModule({
moduleId: 'scaffolder.extention',
pluginId: 'catalog',