Mwalker has submitted this change and it was merged. Change subject: Report status ......................................................................
Report status Change-Id: I5e4c14381fb6185b2bf937787ae3aa35dd4ed0a1 --- M bin/mw-latexer M lib/index.js A lib/status.js 3 files changed, 44 insertions(+), 0 deletions(-) Approvals: Mwalker: Looks good to me, approved jenkins-bot: Verified diff --git a/bin/mw-latexer b/bin/mw-latexer index 912a714..e29744e 100755 --- a/bin/mw-latexer +++ b/bin/mw-latexer @@ -2,6 +2,7 @@ var program = require('commander'); var latexer = require('../'); +var status = require('../lib/status'); program .version(latexer.version) @@ -49,6 +50,9 @@ log: log }; +// TODO: Update this number if we add more stages to the renderer +status.setNumStages(4); + latexer.convert(options).then(function(status) { process.exit(status); }).done(); diff --git a/lib/index.js b/lib/index.js index 7f52dd7..658b525 100644 --- a/lib/index.js +++ b/lib/index.js @@ -8,6 +8,7 @@ var gammalatex = require('gammalatex'); var guard = require('when/guard'); var path = require('path'); +var status = require('./status'); var stream = require('stream'); var tmp = require('tmp'); var url = require('url'); @@ -543,11 +544,16 @@ // (after the bundle has been unpacked) var unpackBundle = function(options) { var metabook, builddir; + + status.createStage(0); + // first create a temporary directory return P.call(tmp.dir, tmp, { prefix: json.name, unsafeCleanup: !options.debug }).then(function(_builddir) { + status.report('Reading data bundle for document construction'); + builddir = _builddir; // now unpack the zip archive options.log('Unpacking bundle in', builddir); @@ -643,7 +649,10 @@ var imagedb = new Db(path.join(builddir, 'imageinfo.db'), { readonly: true }); var p = when.resolve(); + + status.createStage(imagedb.length); return imagedb.forEach(function(key, val) { + status.report('Processing media files for inclusion', val.filename); if (!/^https?:\/\//.test(key)) { // compatibility with pediapress format key = val.resource; @@ -691,6 +700,8 @@ } var p = P.call(output.write, output, head); + status.createStage(1 /* XXX This should be the total number of nodes we're going to visit */); + // XXX HACK ONLY VISIT THE FIRST ITEM var item = metabook; while (item.type !== 'article') { @@ -715,6 +726,7 @@ imagemap: imagemap, parindent: false }); + status.report('Traversing page DOM', item.title); /* XXX Call this for every node */ visitor.visit(document.body); var result = visitor.output.join('\n'); return P.call(output.write, output, result); @@ -730,6 +742,9 @@ // compiled to a PDF. var compileLatex = function(builddir, options) { options.log('Compiling to PDF with xelatex'); + status.createStage(0); + status.report('Compiling to PDF with xelatex'); + gammalatex.setCompileCommand({ command: "xelatex", options: [ diff --git a/lib/status.js b/lib/status.js new file mode 100644 index 0000000..d5a4c04 --- /dev/null +++ b/lib/status.js @@ -0,0 +1,25 @@ +var percentComplete = 0; +var currentStage = 0.0; +var stagesInv = 1.0; +var stageLen = 0; + +module.exports.setNumStages = function(num) { + stagesInv = 1.0 / num; +}; + +module.exports.createStage = function(len) { + percentComplete = currentStage * stagesInv; + currentStage += 1; + if (len) { + stageLen = 1.0 / len; + } else { + stageLen = 0; + } +}; + +module.exports.report = function(message, file) { + percentComplete += 100.0 * (stagesInv * stageLen); + if (process.send) { + process.send(JSON.stringify({status: message, file: file, percent: percentComplete})); + } +}; \ No newline at end of file -- To view, visit https://gerrit.wikimedia.org/r/96972 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5e4c14381fb6185b2bf937787ae3aa35dd4ed0a1 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Collection/OfflineContentGenerator/latex_renderer Gerrit-Branch: master Gerrit-Owner: Mwalker <mwal...@wikimedia.org> Gerrit-Reviewer: Mwalker <mwal...@wikimedia.org> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits