secure-scuttlebot classic
1//poll the progress() function and report how much waiting there is...
2//just whipped this up, obviously room for improvement here.
3module.exports = function (progress) {
4 function bar (r) {
5 var s = '\r', M = 50
6 for(var i = 0; i < M; i++)
7 s += i < M*r ? '*' : '.'
8
9 return s
10 }
11
12 function round (n, p) {
13 return Math.round(n * p) / p
14 }
15
16 function percent (n) {
17 return (round(n, 1000)*100).toString().substring(0, 4)+'%'
18 }
19
20 function rate (prog) {
21 if(prog.target == prog.current) return 1
22 return (prog.current - prog.start) / (prog.target - prog.start)
23 }
24
25 var prog = -1
26 var int = setInterval(function () {
27 var p = progress()
28 var r = 1
29 var tasks = []
30 for(var k in p) {
31 var _r = rate(p[k])
32 if(_r < 1)
33 tasks.push(k+':'+percent(_r))
34 r = Math.min(_r, r)
35 }
36 if(r != prog) {
37 prog = r
38 var msg = tasks.join(', ')
39 process.stdout.write('\r'+bar(prog) + ' ('+msg+')\x1b[K\r')
40 }
41 }, 333)
42 int.unref && int.unref()
43}