Skip to content

Commit 90bdd62

Browse files
committed
feat: introducing new configuration parameter conditionalFile
1 parent 0425b38 commit 90bdd62

1 file changed

Lines changed: 23 additions & 15 deletions

File tree

apps/generator/lib/generator.js

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -876,22 +876,30 @@ class Generator {
876876
if (!shouldOverwriteFile) return;
877877

878878
if (this.templateConfig.conditionalFiles?.[relativeSourceFile]) {
879-
const server = this.templateParams.server && asyncapiDocument.servers().get(this.templateParams.server);
880-
const source = jmespath.search({
881-
...asyncapiDocument.json(),
882-
...{
883-
server: server ? server.json() : undefined,
884-
},
885-
}, this.templateConfig.conditionalFiles[relativeSourceFile].subject);
886-
887-
if (!source) return log.debug(logMessage.relativeSourceFileNotGenerated(relativeSourceFile, this.templateConfig.conditionalFiles[relativeSourceFile].subject));
888-
889-
if (source) {
890-
const validate = this.templateConfig.conditionalFiles[relativeSourceFile].validate;
891-
const valid = validate(source);
892-
if (!valid) return log.debug(logMessage.conditionalFilesMatched(relativeSourceFile));
879+
const parameter = this.templateConfig.conditionalFiles[relativeSourceFile].subject;
880+
const value = await this.getParameterValue(asyncapiDocument, parameter)
881+
if (value !== undefined) {
882+
const validation = this.templateConfig.conditionalFiles[relativeSourceFile].validation;
883+
// Handle "const"
884+
if (validation?.const !== undefined) {
885+
const isValid = value === validation.const;
886+
console.log(isValid)
887+
if (!isValid) {
888+
return log.debug(logMessage.conditionalFilesMatched(relativeSourceFile));
889+
}
890+
}
891+
892+
// Handle "not"
893+
if (validation?.not !== undefined) {
894+
const isNotValid = value === validation.not;
895+
if (isNotValid) {
896+
return log.debug(logMessage.conditionalFilesMatched(relativeSourceFile));
897+
}
898+
}
899+
900+
// You can keep adding more types like "enum", "pattern", etc.
901+
}
893902
}
894-
}
895903

896904
if (this.isNonRenderableFile(relativeSourceFile)) return await copyFile(sourceFile, targetFile);
897905
await this.renderAndWriteToFile(asyncapiDocument, sourceFile, targetFile);

0 commit comments

Comments
 (0)