9de0842719
Closes #12527
72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @dgProcessor errorDocsProcessor
|
|
* @description
|
|
* Process "error" docType docs and generate errorNamespace docs
|
|
*/
|
|
module.exports = function errorDocsProcessor(log, errorNamespaceMap, getMinerrInfo) {
|
|
return {
|
|
$runAfter: ['tags-extracted'],
|
|
$runBefore: ['extra-docs-added'],
|
|
$process: function(docs) {
|
|
|
|
// Get the extracted min errors to compare with the error docs, and report any mismatch
|
|
var collectedErrors = require('../../../build/errors.json').errors;
|
|
var flatErrors = [];
|
|
|
|
for (var namespace in collectedErrors) {
|
|
for (var error in collectedErrors[namespace]) {
|
|
flatErrors.push(namespace + ':' + error);
|
|
}
|
|
}
|
|
|
|
// Create error namespace docs and attach error docs to each
|
|
docs.forEach(function(doc) {
|
|
var parts, namespaceDoc;
|
|
|
|
if (doc.docType === 'error') {
|
|
|
|
var matchingMinErr = flatErrors.indexOf(doc.name);
|
|
|
|
if (matchingMinErr === -1) {
|
|
log.warn('Error doc: ' + doc.name + ' has no matching min error');
|
|
} else {
|
|
flatErrors.splice(matchingMinErr, 1);
|
|
}
|
|
|
|
// Parse out the error info from the id
|
|
parts = doc.name.split(':');
|
|
doc.namespace = parts[0];
|
|
doc.name = parts[1];
|
|
|
|
// Get or create the relevant errorNamespace doc
|
|
namespaceDoc = errorNamespaceMap.get(doc.namespace);
|
|
if (!namespaceDoc) {
|
|
namespaceDoc = {
|
|
area: 'error',
|
|
name: doc.namespace,
|
|
errors: [],
|
|
docType: 'errorNamespace'
|
|
};
|
|
errorNamespaceMap.set(doc.namespace, namespaceDoc);
|
|
}
|
|
|
|
// Link this error doc to its namespace doc
|
|
namespaceDoc.errors.push(doc);
|
|
doc.namespaceDoc = namespaceDoc;
|
|
doc.formattedErrorMessage = getMinerrInfo().errors[doc.namespace][doc.name];
|
|
}
|
|
});
|
|
|
|
flatErrors.forEach(function(value) {
|
|
log.warn('No error doc exists for min error: ' + value);
|
|
});
|
|
|
|
errorNamespaceMap.forEach(function(errorNamespace) {
|
|
docs.push(errorNamespace);
|
|
});
|
|
}
|
|
};
|
|
};
|