mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
42 lines
1.7 KiB
TypeScript
42 lines
1.7 KiB
TypeScript
import * as Handlebars from 'handlebars';
|
|
import * as glob from 'glob';
|
|
import * as path from 'path';
|
|
import { readHandlebarsTemplate } from './readHandlebarsTemplate';
|
|
import { registerHandlebarHelpers } from './registerHandlebarHelpers';
|
|
|
|
export interface Templates {
|
|
index: Handlebars.TemplateDelegate;
|
|
model: Handlebars.TemplateDelegate;
|
|
schema: Handlebars.TemplateDelegate;
|
|
service: Handlebars.TemplateDelegate;
|
|
settings: Handlebars.TemplateDelegate;
|
|
}
|
|
|
|
/**
|
|
* Read all the Handlebar templates that we need and return on wrapper object
|
|
* so we can easily access the templates in out generator / write functions.
|
|
*/
|
|
export function readHandlebarsTemplates(): Templates {
|
|
try {
|
|
registerHandlebarHelpers();
|
|
|
|
const templates: Templates = {
|
|
index: readHandlebarsTemplate(path.resolve(__dirname, `../../src/templates/index.hbs`)),
|
|
model: readHandlebarsTemplate(path.resolve(__dirname, `../../src/templates/model.hbs`)),
|
|
schema: readHandlebarsTemplate(path.resolve(__dirname, `../../src/templates/schema.hbs`)),
|
|
service: readHandlebarsTemplate(path.resolve(__dirname, `../../src/templates/service.hbs`)),
|
|
settings: readHandlebarsTemplate(path.resolve(__dirname, `../../src/templates/core/OpenAPI.hbs`)),
|
|
};
|
|
|
|
const partials = path.resolve(__dirname, `../../src/templates/partials`);
|
|
const partialsFiles = glob.sync('*.hbs', { cwd: partials });
|
|
partialsFiles.forEach(partial => {
|
|
Handlebars.registerPartial(path.basename(partial, '.hbs'), readHandlebarsTemplate(path.resolve(partials, partial)));
|
|
});
|
|
|
|
return templates;
|
|
} catch (e) {
|
|
throw new Error(`Could not read Handlebar templates`);
|
|
}
|
|
}
|