git ssb

2+

ev / minsbot



Tree: d5c6f9521130fcae13928a86e3f39d88e2586342

Files: d5c6f9521130fcae13928a86e3f39d88e2586342 / lib / progress.js

1042 bytesRaw
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, c = 0
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 c++
36 }
37 if(r != prog) {
38 prog = r
39 var msg = tasks.join(', ')
40 process.stdout.write('\r'+bar(prog) + ' ('+msg+')\x1b[K\r')
41 }
42 }, 333)
43 int.unref && int.unref()
44}
45
46
47
48

Built with git-ssb-web