Skip to content

Instantly share code, notes, and snippets.

@cowboy
Last active December 19, 2015 15:39
Show Gist options
  • Save cowboy/5978001 to your computer and use it in GitHub Desktop.
Save cowboy/5978001 to your computer and use it in GitHub Desktop.
progress logging?
var Stream = require('stream');
var logStream = new Stream;
logStream.pipe(process.stdout);
var progress = {};
var prefix;
var msgMaxlen;
var msgLast;
progress.start = function(p) {
prefix = p;
msgMaxlen = 0;
progress.update(0);
};
progress.update = function(current, max) {
var pct = arguments.length === 1 ? current : parseInt(current / max * 100);
var msg = pct + '%';
msgMaxlen = Math.max(msgMaxlen, msg.length);
progress.log(msg);
};
progress.done = function(msg) {
if (msg.length < msgMaxlen) {
msg += Array(msgMaxlen - msg.length + 1).join(' ');
}
progress.log(msg + '\n');
};
progress.log = function(msg) {
if (msg === msgLast) { return; }
msgLast = msg;
logStream.emit('data', '\r' + prefix + ' ' + msg);
};
console.log('Before');
progress.start('Doing something...');
var max = 333;
var i = 0;
var id = setInterval(function() {
i++;
progress.update(i, max);
if (i === max) {
clearInterval(id);
progress.done('OK');
console.log('After');
}
}, 10);
Before
Doing something... 0%
Doing something... 1%
Doing something... 2%
Doing something... 3%
Doing something... 4%
Doing something... 5%
Doing something... 6%
Doing something... 7%
Doing something... 8%
Doing something... 9%
Doing something... 10%
Doing something... 11%
Doing something... 12%
Doing something... 13%
Doing something... 14%
Doing something... 15%
Doing something... 16%
Doing something... 17%
Doing something... 18%
Doing something... 19%
Doing something... 20%
Doing something... 21%
Doing something... 22%
Doing something... 23%
Doing something... 24%
Doing something... 25%
Doing something... 26%
Doing something... 27%
Doing something... 28%
Doing something... 29%
Doing something... 30%
Doing something... 31%
Doing something... 32%
Doing something... 33%
Doing something... 34%
Doing something... 35%
Doing something... 36%
Doing something... 37%
Doing something... 38%
Doing something... 39%
Doing something... 40%
Doing something... 41%
Doing something... 42%
Doing something... 43%
Doing something... 44%
Doing something... 45%
Doing something... 46%
Doing something... 47%
Doing something... 48%
Doing something... 49%
Doing something... 50%
Doing something... 51%
Doing something... 52%
Doing something... 53%
Doing something... 54%
Doing something... 55%
Doing something... 56%
Doing something... 57%
Doing something... 58%
Doing something... 59%
Doing something... 60%
Doing something... 61%
Doing something... 62%
Doing something... 63%
Doing something... 64%
Doing something... 65%
Doing something... 66%
Doing something... 67%
Doing something... 68%
Doing something... 69%
Doing something... 70%
Doing something... 71%
Doing something... 72%
Doing something... 73%
Doing something... 74%
Doing something... 75%
Doing something... 76%
Doing something... 77%
Doing something... 78%
Doing something... 79%
Doing something... 80%
Doing something... 81%
Doing something... 82%
Doing something... 83%
Doing something... 84%
Doing something... 85%
Doing something... 86%
Doing something... 87%
Doing something... 88%
Doing something... 89%
Doing something... 90%
Doing something... 91%
Doing something... 92%
Doing something... 93%
Doing something... 94%
Doing something... 95%
Doing something... 96%
Doing something... 97%
Doing something... 98%
Doing something... 99%
Doing something... 100%
Doing something... OK
After
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment