in src/renderers/MustacheRenderer.js [22:97]
render(specs, language, version, outputDir, cleandir) {
const APISpecs = specs.APISpecs;
const SDKConfig = specs.SDKConfig;
const codegenRootDir = path.resolve(__dirname, '..', '..');
const templateDir = path.resolve(codegenRootDir, 'templates', language);
const sdkRootPath = path.resolve(outputDir);
// load the mustache templates
const loadedTemplates = utils.loadTemplates(templateDir);
const mainTemplates = loadedTemplates.mainTemplates;
const partialTemplates = loadedTemplates.partialTemplates;
const versionedTemplates = loadedTemplates.versionedTemplates;
const filesNeedCopy = loadedTemplates.filesNeedCopy;
// clean up the folder
if (
cleandir === undefined ||
cleandir.length == 0 ||
!fs_extra.existsSync(sdkRootPath)
) {
utils.removeRecursiveSync(sdkRootPath, language);
utils.mkdirsSync(sdkRootPath);
} else {
for (const d of cleandir) {
const tmp = path.resolve(sdkRootPath, d);
console.log(tmp);
utils.removeRecursiveSync(tmp, language);
utils.mkdirsSync(tmp);
}
}
// Copy the common folder
console.log('Generating ' + language + ' SDK in ' + outputDir + '...');
// @fb-only
// @fb-only
// Generate code with mustache templates
for (const nodeName in APISpecs) {
const APIClsSpec = APISpecs[nodeName];
utils.fillMainTemplates(
mainTemplates,
partialTemplates,
APIClsSpec,
language,
codeGenLanguages,
sdkRootPath,
);
}
const depreciationSign = commonUtils.codeGenFileDepreciationSign;
const apiSpecArray = [];
for (const nodeName in APISpecs) {
const APIClsSpec = APISpecs[nodeName];
apiSpecArray.push(APIClsSpec);
}
SDKConfig.api_specs = apiSpecArray;
versionedTemplates.forEach(value => {
const fileContent = mustache.render(value.content, SDKConfig, {});
if (fileContent.trim().indexOf(depreciationSign + '\n')) {
const destDir = sdkRootPath + value.dir;
utils.mkdirsSync(destDir);
fs_extra.writeFileSync(destDir + value.file, fileContent);
}
});
// Copy static files
filesNeedCopy.forEach(value => {
const destDir = sdkRootPath + value.dir;
utils.mkdirsSync(destDir);
fs_extra.copy(templateDir + value.dir + value.file, destDir + value.file);
});
console.log(language + ' SDK generated in ' + outputDir);
},