Merge pull request #29333 from mbenson/scaffolder-template-extensions-stage4

add template-extensions scaffolder service endpoint
This commit is contained in:
Ben Lambert
2025-03-24 09:10:03 +01:00
committed by GitHub
4 changed files with 1620 additions and 1466 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder-backend': minor
---
add template-extensions scaffolder service endpoint
File diff suppressed because it is too large Load Diff
@@ -113,7 +113,11 @@ import { HostDiscovery } from '@backstage/backend-defaults/discovery';
import {
convertFiltersToRecord,
convertGlobalsToRecord,
extractFilterMetadata,
extractGlobalFunctionMetadata,
extractGlobalValueMetadata,
} from '../util/templating';
import { createDefaultFilters } from '../lib/templating/filters/createDefaultFilters';
/**
*
@@ -371,6 +375,7 @@ export async function createRouter(
}
const actionRegistry = new TemplateActionRegistry();
const templateExtensions = {
additionalTemplateFilters: convertFiltersToRecord(
additionalTemplateFilters,
@@ -1109,6 +1114,18 @@ export async function createRouter(
});
res.status(200).json({ results });
})
.get('/v2/template-extensions', async (_req, res) => {
res.status(200).json({
filters: {
...extractFilterMetadata(createDefaultFilters({ integrations })),
...extractFilterMetadata(additionalTemplateFilters),
},
globals: {
functions: extractGlobalFunctionMetadata(additionalTemplateGlobals),
values: extractGlobalValueMetadata(additionalTemplateGlobals),
},
});
});
const app = express();
@@ -197,10 +197,15 @@ export function extractGlobalFunctionMetadata(
for (const global of globals) {
if (isGlobalFunction(global)) {
const metadata: any = {
description: global.description,
examples: global.examples,
};
const metadata: any = {};
if (global.description) {
metadata.description = global.description;
}
if (global.examples) {
metadata.examples = global.examples;
}
if (global.schema) {
metadata.schema = convertZodFunctionToJsonSchema(global.schema(z));