scaffolder-backend: removed alpha options
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend': patch
|
||||
---
|
||||
|
||||
Removed the options from the alpha `scaffolderPlugin` export. To extend the scaffolder plugin you instead now use the available extension points, `scaffolderActionsExtensionPoint`, `scaffolderTaskBrokerExtensionPoint`, and `scaffolderTemplatingExtensionPoint`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-node': patch
|
||||
---
|
||||
|
||||
Added two new alpha extension points, `scaffolderTaskBrokerExtensionPoint` and `scaffolderTemplatingExtensionPoint`.
|
||||
@@ -23,120 +23,104 @@ import { ScmIntegrations } from '@backstage/integration';
|
||||
import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha';
|
||||
import {
|
||||
scaffolderActionsExtensionPoint,
|
||||
ScaffolderActionsExtensionPoint,
|
||||
scaffolderTaskBrokerExtensionPoint,
|
||||
scaffolderTemplatingExtensionPoint,
|
||||
TaskBroker,
|
||||
TemplateAction,
|
||||
} from '@backstage/plugin-scaffolder-node';
|
||||
import {
|
||||
TemplateFilter,
|
||||
TemplateGlobal,
|
||||
TaskBroker,
|
||||
} from '@backstage/plugin-scaffolder-backend';
|
||||
} from '@backstage/plugin-scaffolder-node';
|
||||
import { createBuiltinActions } from './scaffolder';
|
||||
import { createRouter } from './service/router';
|
||||
|
||||
/**
|
||||
* Catalog plugin options
|
||||
* Scaffolder plugin
|
||||
*
|
||||
* @alpha
|
||||
*/
|
||||
export type ScaffolderPluginOptions = {
|
||||
actions?: TemplateAction<any, any>[];
|
||||
taskWorkers?: number;
|
||||
taskBroker?: TaskBroker;
|
||||
additionalTemplateFilters?: Record<string, TemplateFilter>;
|
||||
additionalTemplateGlobals?: Record<string, TemplateGlobal>;
|
||||
};
|
||||
export const scaffolderPlugin = createBackendPlugin({
|
||||
pluginId: 'scaffolder',
|
||||
register(env) {
|
||||
const addedActions = new Array<TemplateAction<any, any>>();
|
||||
env.registerExtensionPoint(scaffolderActionsExtensionPoint, {
|
||||
addActions(...newActions: TemplateAction<any>[]) {
|
||||
addedActions.push(...newActions);
|
||||
},
|
||||
});
|
||||
|
||||
class ScaffolderActionsExtensionPointImpl
|
||||
implements ScaffolderActionsExtensionPoint
|
||||
{
|
||||
#actions = new Array<TemplateAction<any, any>>();
|
||||
let taskBroker: TaskBroker | undefined;
|
||||
env.registerExtensionPoint(scaffolderTaskBrokerExtensionPoint, {
|
||||
setTaskBroker(newTaskBroker) {
|
||||
if (taskBroker) {
|
||||
throw new Error('Task broker may only be set once');
|
||||
}
|
||||
taskBroker = newTaskBroker;
|
||||
},
|
||||
});
|
||||
|
||||
addActions(...actions: TemplateAction<any>[]): void {
|
||||
this.#actions.push(...actions);
|
||||
}
|
||||
const additionalTemplateFilters: Record<string, TemplateFilter> = {};
|
||||
const additionalTemplateGlobals: Record<string, TemplateGlobal> = {};
|
||||
env.registerExtensionPoint(scaffolderTemplatingExtensionPoint, {
|
||||
addTemplateFilters(newFilters) {
|
||||
Object.assign(additionalTemplateFilters, newFilters);
|
||||
},
|
||||
addTemplateGlobals(newGlobals) {
|
||||
Object.assign(additionalTemplateGlobals, newGlobals);
|
||||
},
|
||||
});
|
||||
|
||||
get actions() {
|
||||
return this.#actions;
|
||||
}
|
||||
}
|
||||
env.registerInit({
|
||||
deps: {
|
||||
logger: coreServices.logger,
|
||||
config: coreServices.rootConfig,
|
||||
reader: coreServices.urlReader,
|
||||
permissions: coreServices.permissions,
|
||||
database: coreServices.database,
|
||||
httpRouter: coreServices.httpRouter,
|
||||
catalogClient: catalogServiceRef,
|
||||
},
|
||||
async init({
|
||||
logger,
|
||||
config,
|
||||
reader,
|
||||
database,
|
||||
httpRouter,
|
||||
catalogClient,
|
||||
permissions,
|
||||
}) {
|
||||
const log = loggerToWinstonLogger(logger);
|
||||
|
||||
/**
|
||||
* Catalog plugin
|
||||
*
|
||||
* @alpha
|
||||
*/
|
||||
export const scaffolderPlugin = createBackendPlugin(
|
||||
(options?: ScaffolderPluginOptions) => ({
|
||||
pluginId: 'scaffolder',
|
||||
register(env) {
|
||||
const actionsExtensions = new ScaffolderActionsExtensionPointImpl();
|
||||
|
||||
env.registerExtensionPoint(
|
||||
scaffolderActionsExtensionPoint,
|
||||
actionsExtensions,
|
||||
);
|
||||
|
||||
env.registerInit({
|
||||
deps: {
|
||||
logger: coreServices.logger,
|
||||
config: coreServices.rootConfig,
|
||||
reader: coreServices.urlReader,
|
||||
permissions: coreServices.permissions,
|
||||
database: coreServices.database,
|
||||
httpRouter: coreServices.httpRouter,
|
||||
catalogClient: catalogServiceRef,
|
||||
},
|
||||
async init({
|
||||
logger,
|
||||
config,
|
||||
reader,
|
||||
database,
|
||||
httpRouter,
|
||||
catalogClient,
|
||||
permissions,
|
||||
}) {
|
||||
const {
|
||||
additionalTemplateFilters,
|
||||
taskBroker,
|
||||
taskWorkers,
|
||||
additionalTemplateGlobals,
|
||||
} = options ?? {};
|
||||
const log = loggerToWinstonLogger(logger);
|
||||
|
||||
const actions = options?.actions || [
|
||||
...actionsExtensions.actions,
|
||||
...createBuiltinActions({
|
||||
integrations: ScmIntegrations.fromConfig(config),
|
||||
catalogClient,
|
||||
reader,
|
||||
config,
|
||||
additionalTemplateFilters,
|
||||
additionalTemplateGlobals,
|
||||
}),
|
||||
];
|
||||
|
||||
const actionIds = actions.map(action => action.id).join(', ');
|
||||
log.info(
|
||||
`Starting scaffolder with the following actions enabled ${actionIds}`,
|
||||
);
|
||||
|
||||
const router = await createRouter({
|
||||
logger: log,
|
||||
config,
|
||||
database,
|
||||
const actions = [
|
||||
...addedActions,
|
||||
...createBuiltinActions({
|
||||
integrations: ScmIntegrations.fromConfig(config),
|
||||
catalogClient,
|
||||
reader,
|
||||
actions,
|
||||
taskBroker,
|
||||
taskWorkers,
|
||||
config,
|
||||
additionalTemplateFilters,
|
||||
additionalTemplateGlobals,
|
||||
permissions,
|
||||
});
|
||||
httpRouter.use(router);
|
||||
},
|
||||
});
|
||||
},
|
||||
}),
|
||||
);
|
||||
}),
|
||||
];
|
||||
|
||||
const actionIds = actions.map(action => action.id).join(', ');
|
||||
log.info(
|
||||
`Starting scaffolder with the following actions enabled ${actionIds}`,
|
||||
);
|
||||
|
||||
const router = await createRouter({
|
||||
logger: log,
|
||||
config,
|
||||
database,
|
||||
catalogClient,
|
||||
reader,
|
||||
actions,
|
||||
taskBroker,
|
||||
additionalTemplateFilters,
|
||||
additionalTemplateGlobals,
|
||||
permissions,
|
||||
});
|
||||
httpRouter.use(router);
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -17,4 +17,3 @@
|
||||
export * from './modules';
|
||||
export * from './service';
|
||||
export { scaffolderPlugin } from './ScaffolderPlugin';
|
||||
export type { ScaffolderPluginOptions } from './ScaffolderPlugin';
|
||||
|
||||
@@ -15,7 +15,12 @@
|
||||
*/
|
||||
|
||||
import { createExtensionPoint } from '@backstage/backend-plugin-api';
|
||||
import { TemplateAction } from './actions';
|
||||
import {
|
||||
TemplateAction,
|
||||
TemplateFilter,
|
||||
TemplateGlobal,
|
||||
TaskBroker,
|
||||
} from '@backstage/plugin-scaffolder-node';
|
||||
|
||||
/**
|
||||
* Extension point for managing scaffolder actions.
|
||||
@@ -35,3 +40,42 @@ export const scaffolderActionsExtensionPoint =
|
||||
createExtensionPoint<ScaffolderActionsExtensionPoint>({
|
||||
id: 'scaffolder.actions',
|
||||
});
|
||||
|
||||
/**
|
||||
* Extension point for replacing the scaffolder task broker.
|
||||
*
|
||||
* @alpha
|
||||
*/
|
||||
export interface ScaffolderTaskBrokerExtensionPoint {
|
||||
setTaskBroker(taskBroker: TaskBroker): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extension point for replacing the scaffolder task broker.
|
||||
*
|
||||
* @alpha
|
||||
*/
|
||||
export const scaffolderTaskBrokerExtensionPoint =
|
||||
createExtensionPoint<ScaffolderTaskBrokerExtensionPoint>({
|
||||
id: 'scaffolder.taskBroker',
|
||||
});
|
||||
|
||||
/**
|
||||
* Extension point for adding template filters and globals.
|
||||
*
|
||||
* @alpha
|
||||
*/
|
||||
export interface ScaffolderTemplatingExtensionPoint {
|
||||
addTemplateFilters(filters: Record<string, TemplateFilter>): void;
|
||||
addTemplateGlobals(filters: Record<string, TemplateGlobal>): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extension point for adding template filters and globals.
|
||||
*
|
||||
* @alpha
|
||||
*/
|
||||
export const scaffolderTemplatingExtensionPoint =
|
||||
createExtensionPoint<ScaffolderTemplatingExtensionPoint>({
|
||||
id: 'scaffolder.templating',
|
||||
});
|
||||
|
||||
@@ -26,4 +26,8 @@ export type { TemplateFilter, TemplateGlobal } from './types';
|
||||
export {
|
||||
scaffolderActionsExtensionPoint,
|
||||
type ScaffolderActionsExtensionPoint,
|
||||
scaffolderTaskBrokerExtensionPoint,
|
||||
type ScaffolderTaskBrokerExtensionPoint,
|
||||
scaffolderTemplatingExtensionPoint,
|
||||
type ScaffolderTemplatingExtensionPoint,
|
||||
} from './extensions';
|
||||
|
||||
Reference in New Issue
Block a user