[ADF-2463] Update doc tools to work with subfolders (#3056)

* [ADF-2463] Updated main doc tool and index tool to handle subfolders

* [ADF-2463] Updated version index tool for subfolders
This commit is contained in:
Andy Stark
2018-03-09 22:39:59 +00:00
committed by Eugenio Romano
parent 16a8fa8cd8
commit 4ee7cc0870
3 changed files with 54 additions and 21 deletions

View File

@@ -23,9 +23,9 @@ function initPhase(aggData) {
} }
function readPhase(srcFolder, filenames, aggData) { function readPhase(filenames, aggData) {
for (var i = 0; i < filenames.length; i++) { for (var i = 0; i < filenames.length; i++) {
var pathname = path.resolve(srcFolder, filenames[i]); var pathname = filenames[i];//path.resolve(srcFolder, filenames[i]);
var src = fs.readFileSync(pathname); var src = fs.readFileSync(pathname);
var tree = remark().use(frontMatter, ["yaml"]).parse(src); var tree = remark().use(frontMatter, ["yaml"]).parse(src);
@@ -46,9 +46,9 @@ function aggPhase(aggData) {
} }
function updatePhase(srcFolder, destFolder, filenames, aggData) { function updatePhase(filenames, aggData) {
for (var i = 0; i < filenames.length; i++) { for (var i = 0; i < filenames.length; i++) {
var pathname = path.resolve(srcFolder, filenames[i]); var pathname = filenames[i]; // path.resolve(srcFolder, filenames[i]);
var src = fs.readFileSync(pathname); var src = fs.readFileSync(pathname);
var tree = remark().use(frontMatter, ["yaml"]).parse(src) var tree = remark().use(frontMatter, ["yaml"]).parse(src)
@@ -60,8 +60,9 @@ function updatePhase(srcFolder, destFolder, filenames, aggData) {
}); });
if (modified) if (modified)
fs.writeFileSync(path.resolve(destFolder, filenames[i]), remark().use(frontMatter, {type: 'yaml', fence: '---'}).data("settings", {paddedTable: false}).stringify(tree)); fs.writeFileSync(filenames[i], remark().use(frontMatter, {type: 'yaml', fence: '---'}).data("settings", {paddedTable: false}).stringify(tree));
//console.log(JSON.stringify(tree));
//console.log(JSON.stringify(tree));
} }
} }
@@ -91,8 +92,24 @@ function loadToolConfig(configFilePath) {
} }
function getAllDocFilePaths(docFolder, files) {
var items = fs.readdirSync(docFolder);
for (var i = 0; i < items.length; i++) {
var itemPath = path.resolve(docFolder, items[i]);
var itemInfo = fs.statSync(itemPath);
if (itemInfo.isFile()){
files.push(itemPath);
} else if (itemInfo.isDirectory()) {
getAllDocFilePaths(itemPath, files);
}
}
}
program program
.usage("[options] <source> [dest]") .usage("[options] <source>")
.parse(process.argv); .parse(process.argv);
if (program.args.length === 0) { if (program.args.length === 0) {
@@ -104,6 +121,7 @@ if (program.args.length === 0) {
var sourcePath = path.resolve(program.args[0]); var sourcePath = path.resolve(program.args[0]);
var sourceInfo = fs.statSync(sourcePath); var sourceInfo = fs.statSync(sourcePath);
/*
var destPath; var destPath;
var destInfo; var destInfo;
@@ -119,19 +137,21 @@ if (sourceInfo.isDirectory() && !destInfo.isDirectory()) {
console.log("Error: The <dest> argument must be a directory"); console.log("Error: The <dest> argument must be a directory");
return 0; return 0;
} }
*/
var toolModules = loadToolModules(); var toolModules = loadToolModules();
var toolList = loadToolConfig(path.resolve(__dirname, configFileName)); var toolList = loadToolConfig(path.resolve(__dirname, configFileName));
var files; var files = [];
if (sourceInfo.isDirectory()) { if (sourceInfo.isDirectory()) {
files = fs.readdirSync(sourcePath); getAllDocFilePaths(sourcePath, files);
} else if (sourceInfo.isFile()) { } else if (sourceInfo.isFile()) {
files = [ path.basename(sourcePath) ]; files = [ sourcePath ];
sourcePath = path.dirname(sourcePath); //files = [ path.basename(sourcePath) ];
destPath = path.dirname(destPath); //sourcePath = path.dirname(sourcePath);
//destPath = path.dirname(destPath);
} }
files = files.filter(filename => files = files.filter(filename =>
@@ -145,13 +165,13 @@ console.log("Initialising...");
initPhase(aggData); initPhase(aggData);
console.log("Analysing Markdown files..."); console.log("Analysing Markdown files...");
readPhase(sourcePath, files, aggData); readPhase(files, aggData);
console.log("Computing aggregate data..."); console.log("Computing aggregate data...");
aggPhase(aggData); aggPhase(aggData);
console.log("Updating Markdown files..."); console.log("Updating Markdown files...");
updatePhase(sourcePath, destPath, files, aggData); updatePhase(files, aggData);

View File

@@ -39,7 +39,7 @@ function initPhase(aggData) {
aggData.srcData = {}; aggData.srcData = {};
aggData.mdFileDesc = []; aggData.mdFileDesc = [];
aggData.mdFileStatus = []; aggData.mdFileStatus = [];
aggData.mdFilePath = [];
searchLibraryRecursive(aggData.srcData, path.resolve(rootFolder)); searchLibraryRecursive(aggData.srcData, path.resolve(rootFolder));
//console.log(JSON.stringify(aggData.srcData)); //console.log(JSON.stringify(aggData.srcData));
@@ -50,7 +50,7 @@ function readPhase(tree, pathname, aggData) {
var itemName = path.basename(pathname, ".md"); var itemName = path.basename(pathname, ".md");
// Look for the first paragraph in the file by skipping other items. // Look for the first paragraph in the file by skipping other items.
// Should usually be a position 1 in the tree. // Should usually be at position 1 in the tree.
var s; var s;
var briefDesc; var briefDesc;
@@ -80,6 +80,10 @@ function readPhase(tree, pathname, aggData) {
} }
} }
var linkPath = pathname.replace(/\\/g, '/');
linkPath = linkPath.substr(linkPath.indexOf("docs") + 5);
aggData.mdFilePath[itemName] = linkPath;
} }
function aggPhase(aggData) { function aggPhase(aggData) {
@@ -159,6 +163,7 @@ function prepareIndexSections(aggData) {
var briefDesc = aggData.mdFileDesc[itemName]; var briefDesc = aggData.mdFileDesc[itemName];
var displayName = ngHelpers.ngNameToDisplayName(itemName); var displayName = ngHelpers.ngNameToDisplayName(itemName);
var pathname = aggData.mdFilePath[itemName];
var status = ""; var status = "";
@@ -169,6 +174,7 @@ function prepareIndexSections(aggData) {
sections[libName][srcData.type].documented.push({ sections[libName][srcData.type].documented.push({
"displayName": displayName, "displayName": displayName,
"mdName": itemName + ".md", "mdName": itemName + ".md",
"mdPath": pathname,
"srcPath": srcData.path, "srcPath": srcData.path,
"briefDesc": briefDesc, "briefDesc": briefDesc,
"status": status "status": status
@@ -280,7 +286,7 @@ function makeMDUndocumentedListItem(docItem) {
function makeMDDocumentedTableRow(docItem) { function makeMDDocumentedTableRow(docItem) {
var mdFileLink = unist.makeLink(unist.makeText(docItem.displayName), docItem.mdName); var mdFileLink = unist.makeLink(unist.makeText(docItem.displayName), docItem.mdPath);
var srcFileLink = unist.makeLink(unist.makeText("Source"), "../lib/" + docItem.srcPath); var srcFileLink = unist.makeLink(unist.makeText("Source"), "../lib/" + docItem.srcPath);
var desc = docItem.briefDesc; var desc = docItem.briefDesc;

View File

@@ -31,7 +31,7 @@ function initPhase(aggData) {
function readPhase(tree, pathname, aggData) { function readPhase(tree, pathname, aggData) {
var compName = path.basename(pathname, ".md"); var compName = pathname; //path.basename(pathname, ".md");
var angNameRegex = /([a-zA-Z0-9\-]+)\.((component)|(directive)|(model)|(pipe)|(service)|(widget))/; var angNameRegex = /([a-zA-Z0-9\-]+)\.((component)|(directive)|(model)|(pipe)|(service)|(widget))/;
if (!compName.match(angNameRegex)) if (!compName.match(angNameRegex))
@@ -86,13 +86,20 @@ function aggPhase(aggData) {
for (var i = 0; i < keys.length; i++) { for (var i = 0; i < keys.length; i++) {
var version = keys[i]; var version = keys[i];
var versionItems = aggData.versions[version]; var versionItems = aggData.versions[version];
versionItems.sort(); versionItems.sort((a, b) => {
var aa = path.basename(a, ".md");
var bb = path.basename(b, ".md");
return aa.localeCompare(bb);
});
var versListItems = []; var versListItems = [];
for (var v = 0; v < versionItems.length; v++) { for (var v = 0; v < versionItems.length; v++) {
var displayName = ngHelpers.ngNameToDisplayName(versionItems[v]); var displayName = ngHelpers.ngNameToDisplayName(path.basename(versionItems[v], ".md"));
var pageLink = versionItems[v] + ".md"; var pageLink = versionItems[v];// + ".md";
pageLink = pageLink.replace(/\\/g, '/');
pageLink = pageLink.substr(pageLink.indexOf("docs") + 5);
versListItems.push( versListItems.push(
unist.makeListItem( unist.makeListItem(