refactor: [#8920] Rename for inclusion of other templating engines

Signed-off-by: David Zemon <david@zemon.name>
This commit is contained in:
David Zemon
2022-01-21 10:44:02 -06:00
parent 0e4f141661
commit 2137b84c32
8 changed files with 31 additions and 30 deletions
@@ -104,7 +104,7 @@ describe('SecureTemplater', () => {
const mockFilter2 = jest.fn((var1, var2) => `${var1} ${var2}`);
const mockFilter3 = jest.fn((var1, var2) => ({ var1, var2 }));
const renderWith = await SecureTemplater.loadRenderer({
nunjucksFilters: { mockFilter1, mockFilter2, mockFilter3 },
additionalTemplateFilters: { mockFilter1, mockFilter2, mockFilter3 },
});
const renderWithout = await SecureTemplater.loadRenderer();
@@ -58,8 +58,8 @@ const { render, renderCompat } = (() => {
});
}
if (typeof nunjucksFilters !== 'undefined') {
for (const [filterName, filterFn] of Object.entries(nunjucksFilters)) {
if (typeof additionalTemplateFilters !== 'undefined') {
for (const [filterName, filterFn] of Object.entries(additionalTemplateFilters)) {
env.addFilter(filterName, (...args) => JSON.parse(filterFn(...args)));
}
}
@@ -95,7 +95,7 @@ const { render, renderCompat } = (() => {
})();
`;
export type NunjucksFilter = (...args: JsonValue[]) => JsonValue | undefined;
export type TemplateFilter = (...args: JsonValue[]) => JsonValue | undefined;
export interface SecureTemplaterOptions {
/* Optional implementation of the parseRepoUrl filter */
@@ -105,7 +105,7 @@ export interface SecureTemplaterOptions {
cookiecutterCompat?: boolean;
/* Extra user-provided nunjucks filters */
nunjucksFilters?: Record<string, NunjucksFilter>;
additionalTemplateFilters?: Record<string, TemplateFilter>;
}
export type SecureTemplateRenderer = (
@@ -115,16 +115,17 @@ export type SecureTemplateRenderer = (
export class SecureTemplater {
static async loadRenderer(options: SecureTemplaterOptions = {}) {
const { parseRepoUrl, cookiecutterCompat, nunjucksFilters } = options;
const { parseRepoUrl, cookiecutterCompat, additionalTemplateFilters } =
options;
const sandbox: Record<string, any> = {};
if (parseRepoUrl) {
sandbox.parseRepoUrl = (url: string) => JSON.stringify(parseRepoUrl(url));
}
if (nunjucksFilters) {
sandbox.nunjucksFilters = Object.fromEntries(
Object.entries(nunjucksFilters)
if (additionalTemplateFilters) {
sandbox.additionalTemplateFilters = Object.fromEntries(
Object.entries(additionalTemplateFilters)
.filter(([_, filterFunction]) => !!filterFunction)
.map(([filterName, filterFunction]) => [
filterName,
@@ -14,4 +14,4 @@
* limitations under the License.
*/
export type { NunjucksFilter } from './SecureTemplater';
export type { TemplateFilter } from './SecureTemplater';
@@ -46,7 +46,7 @@ import {
createGithubActionsDispatchAction,
createGithubWebhookAction,
} from './github';
import { NunjucksFilter } from '../../../lib/templating/SecureTemplater';
import { TemplateFilter } from '../../../lib';
export const createBuiltinActions = (options: {
reader: UrlReader;
@@ -54,7 +54,7 @@ export const createBuiltinActions = (options: {
catalogClient: CatalogApi;
containerRunner?: ContainerRunner;
config: Config;
nunjucksFilters?: Record<string, NunjucksFilter>;
additionalTemplateFilters?: Record<string, TemplateFilter>;
}) => {
const {
reader,
@@ -62,7 +62,7 @@ export const createBuiltinActions = (options: {
containerRunner,
catalogClient,
config,
nunjucksFilters,
additionalTemplateFilters,
} = options;
const githubCredentialsProvider: GithubCredentialsProvider =
DefaultGithubCredentialsProvider.fromIntegrations(integrations);
@@ -75,7 +75,7 @@ export const createBuiltinActions = (options: {
createFetchTemplateAction({
integrations,
reader,
nunjucksFilters,
additionalTemplateFilters,
}),
createPublishGithubAction({
integrations,
@@ -24,7 +24,7 @@ import globby from 'globby';
import fs from 'fs-extra';
import { isBinaryFile } from 'isbinaryfile';
import {
NunjucksFilter,
TemplateFilter,
SecureTemplater,
} from '../../../../lib/templating/SecureTemplater';
@@ -47,9 +47,9 @@ export type FetchTemplateInput = {
export function createFetchTemplateAction(options: {
reader: UrlReader;
integrations: ScmIntegrations;
nunjucksFilters?: Record<string, NunjucksFilter>;
additionalTemplateFilters?: Record<string, TemplateFilter>;
}) {
const { reader, integrations, nunjucksFilters } = options;
const { reader, integrations, additionalTemplateFilters } = options;
return createTemplateAction<FetchTemplateInput>({
id: 'fetch:template',
@@ -186,7 +186,7 @@ export function createFetchTemplateAction(options: {
const renderTemplate = await SecureTemplater.loadRenderer({
cookiecutterCompat: ctx.input.cookiecutterCompat,
nunjucksFilters: nunjucksFilters,
additionalTemplateFilters,
});
for (const location of allEntriesInTemplate) {
@@ -35,7 +35,7 @@ import { validate as validateJsonSchema } from 'jsonschema';
import { parseRepoUrl } from '../actions/builtin/publish/util';
import { TemplateActionRegistry } from '../actions';
import {
NunjucksFilter,
TemplateFilter,
SecureTemplater,
SecureTemplateRenderer,
} from '../../lib/templating/SecureTemplater';
@@ -45,7 +45,7 @@ type NunjucksWorkflowRunnerOptions = {
actionRegistry: TemplateActionRegistry;
integrations: ScmIntegrations;
logger: winston.Logger;
nunjucksFilters?: Record<string, NunjucksFilter>;
additionalTemplateFilters?: Record<string, TemplateFilter>;
};
type TemplateContext = {
@@ -192,7 +192,7 @@ export class NunjucksWorkflowRunner implements WorkflowRunner {
parseRepoUrl(url: string) {
return parseRepoUrl(url, integrations);
},
nunjucksFilters: this.options.nunjucksFilters,
additionalTemplateFilters: this.options.additionalTemplateFilters,
});
try {
@@ -21,7 +21,7 @@ import { Logger } from 'winston';
import { TemplateActionRegistry } from '../actions';
import { ScmIntegrations } from '@backstage/integration';
import { assertError } from '@backstage/errors';
import { NunjucksFilter } from '../../lib/templating/SecureTemplater';
import { TemplateFilter } from '../../lib/templating/SecureTemplater';
/**
* TaskWorkerOptions
@@ -47,7 +47,7 @@ export type CreateWorkerOptions = {
integrations: ScmIntegrations;
workingDirectory: string;
logger: Logger;
nunjucksFilters?: Record<string, NunjucksFilter>;
additionalTemplateFilters?: Record<string, TemplateFilter>;
};
/**
@@ -65,7 +65,7 @@ export class TaskWorker {
actionRegistry,
integrations,
workingDirectory,
nunjucksFilters,
additionalTemplateFilters,
} = options;
const legacyWorkflowRunner = new HandlebarsWorkflowRunner({
@@ -80,7 +80,7 @@ export class TaskWorker {
integrations,
logger,
workingDirectory,
nunjucksFilters: nunjucksFilters,
additionalTemplateFilters,
});
return new TaskWorker({
@@ -29,7 +29,7 @@ import express from 'express';
import Router from 'express-promise-router';
import { validate } from 'jsonschema';
import { Logger } from 'winston';
import { CatalogEntityClient, NunjucksFilter } from '../lib';
import { CatalogEntityClient, TemplateFilter } from '../lib';
import {
createBuiltinActions,
DatabaseTaskStore,
@@ -57,7 +57,7 @@ export interface RouterOptions {
taskWorkers?: number;
containerRunner?: ContainerRunner;
taskBroker?: TaskBroker;
nunjucksFilters?: Record<string, NunjucksFilter>;
additionalTemplateFilters?: Record<string, TemplateFilter>;
}
function isSupportedTemplate(
@@ -84,7 +84,7 @@ export async function createRouter(
actions,
containerRunner,
taskWorkers,
nunjucksFilters,
additionalTemplateFilters,
} = options;
const logger = parentLogger.child({ plugin: 'scaffolder' });
@@ -112,7 +112,7 @@ export async function createRouter(
integrations,
logger,
workingDirectory,
nunjucksFilters,
additionalTemplateFilters,
});
workers.push(worker);
}
@@ -125,7 +125,7 @@ export async function createRouter(
containerRunner,
reader,
config,
nunjucksFilters,
additionalTemplateFilters,
});
actionsToRegister.forEach(action => actionRegistry.register(action));