in experimental/generation/generator/packages/library/src/dialogGenerator.ts [752:793]
async function ensureEntitiesAndTemplates(
schema: s.Schema,
templateDirs: string[],
scope: any,
feedback: Feedback)
: Promise<void> {
for (const property of schema.schemaProperties()) {
if (!property.schema.$entities || !property.schema.$templates) {
const template = property.schema.$template
if (!template) {
feedback(FeedbackType.error, `${property.path} has no $template`)
} else {
try {
scope.property = property.path
scope.propertySchema = property.schema
const rootTemplate = await findTemplate(template, templateDirs)
const lgTemplate: lg.Templates | undefined = rootTemplate instanceof lg.Templates ? rootTemplate as lg.Templates : undefined
if (!lgTemplate) {
feedback(FeedbackType.error, `Cannot find ${rootTemplate} for ${property.path}`)
} else {
if (!property.schema.$entities) {
feedback(FeedbackType.debug, `Expanding template ${lgTemplate.id} for ${property.path} $entities`)
property.schema.$entities = lgTemplate.evaluate('entities', scope) as string[]
if (!property.schema.$entities) {
feedback(FeedbackType.error, `${property.path} has no $entities`)
}
}
if (!property.schema.$templates) {
feedback(FeedbackType.debug, `Expanding template ${lgTemplate.id} for ${property.path} $templates`)
property.schema.$templates = lgTemplate.evaluate('generators', scope) as string[]
if (!property.schema.$templates) {
feedback(FeedbackType.error, `${property.path} has no $templates`)
}
}
}
} catch (e) {
feedback(FeedbackType.error, (e as Error).message)
}
}
}
}
}