scaffolder-backend: removed alpha options

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2023-08-15 16:14:20 +02:00
parent 88bc6e27a2
commit 349611126a
6 changed files with 142 additions and 101 deletions
@@ -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);
},
});
},
});
-1
View File
@@ -17,4 +17,3 @@
export * from './modules';
export * from './service';
export { scaffolderPlugin } from './ScaffolderPlugin';
export type { ScaffolderPluginOptions } from './ScaffolderPlugin';