-
Notifications
You must be signed in to change notification settings - Fork 95
/
formatStdErr.js
65 lines (50 loc) · 1.65 KB
/
formatStdErr.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
const l = console.log;
const ten = ' 10%|█ | 5332/52135 [00:10<01:25, 545.77frames/s]';
function formatStdErr (stdErrData) {
// if a progress output
if (stdErrData.includes('frames/s')) {
// looks like: '█ '
const progressBar = stdErrData.split('|')[1].split('|')[0]
// looks like: '10%'
let percentDone = stdErrData.split('|')[0].trim();
// looks like: 10
let percentDoneAsNumber = Number(stdErrData.split('%')[0].trim());
// looks like: '00:10<01:25, 545.77frames/s]'
let timeLeftPortion = stdErrData.split('[')[1].split('[')[0]
// looks like: '00:10<01:25'
const firstPortion = timeLeftPortion.split(',')[0]
// looks like: '00:10'
const timeElapsed = firstPortion.split('<')[0]
// looks like: '01:25'
const timeRemainingString = timeLeftPortion.split('<')[1].split(',')[0]
// looks like: '545.77'
const speed = timeLeftPortion.split('<')[1].split(',')[1].split('frames')[0].trim()
// looks like: '545.77'
const splitTimeRemaining = timeRemainingString.split(':')
// looks like: '01'
const secondsRemaining = Number(splitTimeRemaining.pop());
// looks like: '25'
const minutesRemaining = Number(splitTimeRemaining.pop());
// looks like: 'NaN'
const hoursRemaining = Number(splitTimeRemaining.pop());
// format for lib
return {
progressBar,
percentDone,
timeElapsed,
speed,
percentDoneAsNumber,
timeRemaining: {
string: timeRemainingString,
hoursRemaining,
minutesRemaining,
secondsRemaining
},
}
} else {
return false
}
}
module.exports = {
formatStdErr
}