From a0ccb858f5b5ec5ec4e7b4605c27abff410c0b97 Mon Sep 17 00:00:00 2001 From: Benny Neugebauer Date: Fri, 27 Dec 2019 15:22:29 +0100 Subject: [PATCH] fix: Register Handlebars comparison helpers (#164) --- src/Swaxios.ts | 3 --- src/generators/TemplateGenerator.ts | 9 ++++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Swaxios.ts b/src/Swaxios.ts index f66fda2f..2fdb11ec 100644 --- a/src/Swaxios.ts +++ b/src/Swaxios.ts @@ -2,7 +2,6 @@ import axios from 'axios'; import {isCI} from 'ci-info'; import {getYesNo} from 'cli-interact'; import fs from 'fs-extra'; -import initializeHelpers from 'handlebars-helpers'; import path from 'path'; import yaml from 'yamljs'; @@ -13,8 +12,6 @@ import {DirEntry, generateFileIndex} from './util/FileUtil'; import * as StringUtil from './util/StringUtil'; import {validateConfig} from './validator/SwaggerValidator'; -initializeHelpers(['comparison']); - export async function exportServices(swaggerJson: OpenAPIV2.Document): Promise { const resources: ResourceGenerator[] = []; const recordedUrls: Record> = {}; diff --git a/src/generators/TemplateGenerator.ts b/src/generators/TemplateGenerator.ts index f1014df3..0c2a2712 100644 --- a/src/generators/TemplateGenerator.ts +++ b/src/generators/TemplateGenerator.ts @@ -1,5 +1,6 @@ import fs from 'fs-extra'; import Handlebars from 'handlebars'; +import helpers from 'handlebars-helpers'; import path from 'path'; import prettier from 'prettier'; @@ -9,6 +10,12 @@ export abstract class TemplateGenerator { protected abstract name: string; protected abstract templateFile: string; protected abstract async getContext(): Promise; + private readonly handlebars: typeof Handlebars; + + constructor() { + this.handlebars = Handlebars.create(); + helpers(['comparison'], {handlebars: this.handlebars}); + } protected getTemplateFile(): string { return path.resolve(__dirname, '../templates', this.templateFile); @@ -19,7 +26,7 @@ export abstract class TemplateGenerator { const context = await this.getContext(); if (templateFile && context) { const templateSource = await fs.readFile(templateFile, 'utf8'); - const template = Handlebars.compile(templateSource); + const template = this.handlebars.compile(templateSource); return template(context); } return '';