var path = require('path'); var fs = require('fs'); var erase = true; var readmeContent = null; var readmeFilePath = ''; function isFileEmpty(fileContents) { return fileContents.toString('utf8').trim() === ''; } function writeFile(file, newValue) { fs.writeFileSync(file, newValue, 'utf-8'); } function readFile(file) { return fs.readFileSync(file, 'utf8'); } function eraseContentList() { if (erase) { erase = false; var businessRegex = /(?:)([\s\S]*?)(?:)/; var contentRegex = /(?:)([\s\S]*?)(?:)/; var coreRegex = /(?:)([\s\S]*?)(?:)/; var businessRegexDirective = /(?:)([\s\S]*?)(?:)/; var contentRegexDirective = /(?:)([\s\S]*?)(?:)/; var coreRegexDirective = /(?:)([\s\S]*?)(?:)/; readmeContent = readmeContent.replace(businessRegex, ''); readmeContent = readmeContent.replace(contentRegex, ''); readmeContent = readmeContent.replace(coreRegex, ''); readmeContent = readmeContent.replace(businessRegexDirective, ''); readmeContent = readmeContent.replace(contentRegexDirective, ''); readmeContent = readmeContent.replace(coreRegexDirective, ''); writeFile(readmeFilePath, readmeContent) } } function generateListComponent(currentFileContent, webpackInstance) { if (!isFileEmpty(currentFileContent)) { var componentReg = /(@Component)(\s?)\((\s?){(\s?)((.|\n)*)}(\s?)\)/gm; var componentSection = componentReg.exec(currentFileContent); if (componentSection) { var selectorReg = /(selector)(\s?):(\s?)('|")((.|)*)('|")/gm; var selector = selectorReg.exec(componentSection[0]); if (selector) { if (selector[0].indexOf('alfresco') > 0 || selector[0].indexOf('activiti') > 0 || selector[0].indexOf('adf') > 0) { var selector = selector[0].replace("selector: '[", "").replace("']", '').replace("]", '').replace("selector: '", "").replace("'", ''); var removeRoot = webpackInstance.resourcePath.substr(webpackInstance.resourcePath.indexOf('/ng2-components') + 16, webpackInstance.resourcePath.length); var url = removeRoot.substr(0, removeRoot.indexOf('src')) + 'README.md'; var link = '- [' + selector + '](' + url + ')'; if (webpackInstance.resourcePath.match('ng2-alfresco-core')) { readmeContent = readmeContent.replace('', '\n' + link); } else if (webpackInstance.resourcePath.match('ng2-alfresco-')) { readmeContent = readmeContent.replace('', '\n' + link); } else if (webpackInstance.resourcePath.match('ng2-activiti-')) { readmeContent = readmeContent.replace('', '\n' + link); } } } } var directiveReg = /(@Directive)(\s?)\((\s?){(\s?)((.|\n)*)}(\s?)\)/gm; var directiveSection = directiveReg.exec(currentFileContent); if (directiveSection) { var selectorReg = /(selector)(\s?):(\s?)('|")((.|)*)('|")/gm; var selector = selectorReg.exec(directiveSection[0]); if (selector) { var selector = selector[0].replace("selector: '[", "").replace("']", '').replace("]", '').replace("selector: '", "").replace("'", ''); var removeRoot = webpackInstance.resourcePath.substr(webpackInstance.resourcePath.indexOf('/ng2-components') + 16, webpackInstance.resourcePath.length); var url = removeRoot.substr(0, removeRoot.indexOf('src')) + 'README.md'; var link = '- [' + selector + '](' + url + ')'; if (webpackInstance.resourcePath.match('ng2-alfresco-core')) { readmeContent = readmeContent.replace('', '\n' + link); } //else if (webpackInstance.resourcePath.match('ng2-alfresco-')) { // readmeContent = readmeContent.replace('', '\n' + link); //} //else if (webpackInstance.resourcePath.match('ng2-activiti-')) { // readmeContent = readmeContent.replace('', '\n' + link); //} } } writeFile(readmeFilePath, readmeContent); return true; } } module.exports = function (input, map) { this.cacheable && this.cacheable(); var callback = this.async(); readmeFilePath = path.resolve(__dirname, '../../README.md'); if (!readmeContent) { readmeContent = readFile(readmeFilePath); } if (readmeContent) { eraseContentList(); generateListComponent(input, this); } callback(null, input, map); }