loadTemplates()

in src/renderers/Utils.js [34:94]


    loadTemplates(templateDir: string) {
        // 1. load codegen main templates
        // 2. load codegen partial templates
        // 3. discover files need to copy to the sdk folder
        const mainTemplates = [];
        const partialTemplates = {};
        const versionedTemplates = [];
        const filesNeedCopy = [];

        const walkTemplateDir = (dir: string) => {
            const relativeDir = dir.substring(templateDir.length) + path.sep;
            fs.readdirSync(dir).forEach(file => {
                const fullPath = path.join(dir, file);

                const stat = fs.statSync(fullPath);
                if (stat.isDirectory()) {
                    walkTemplateDir(fullPath);
                } else if (stat.isFile()) {
                    let match = file.match(/^(.*)\.mustache$/);
                    if (match) {
                        const name = match[1];
                        if (name === 'codegen') {
                            // Main templates
                            mainTemplates.push({
                                dir: relativeDir,
                                content: fs.readFileSync(fullPath, 'utf8'),
                            });
                        } else {
                            match = name.match(/^(.*)\.versioned$/);
                            if (match) {
                                // Config template ends with .versioned.mustache
                                versionedTemplates.push({
                                    content: fs.readFileSync(fullPath, 'utf8'),
                                    dir: relativeDir,
                                    file: match[1],
                                });
                            } else {
                                // Partial templates
                                partialTemplates[relativeDir + name] = fs.readFileSync(
                                    fullPath,
                                    'utf8',
                                );
                            }
                        }
                    } else {
                        filesNeedCopy.push({
                            dir: relativeDir,
                            file: file,
                        });
                    }
                }
            });
        };
        walkTemplateDir(templateDir);
        return {
            mainTemplates: mainTemplates,
            partialTemplates: partialTemplates,
            versionedTemplates: versionedTemplates,
            filesNeedCopy: filesNeedCopy,
        };
    },