summaryrefslogtreecommitdiff
path: root/timestamps
diff options
context:
space:
mode:
Diffstat (limited to 'timestamps')
-rwxr-xr-xtimestamps67
1 files changed, 67 insertions, 0 deletions
diff --git a/timestamps b/timestamps
new file mode 100755
index 0000000..9c7b6fd
--- /dev/null
+++ b/timestamps
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+
+
+import re
+import sys
+
+
+def getint(m, i):
+ return int(m.group(i))
+
+
+def parse_ts(ts):
+ m = re.match(r'(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)', ts)
+ assert m is not None
+ year = getint(m, 1)
+ month = getint(m, 2)
+ day = getint(m, 3)
+ hour = getint(m, 4)
+ minute = getint(m, 5)
+ second = getint(m, 6)
+ return hour * 3600 + minute * 60 + second
+
+
+build_starts = re.compile(r'^Build starts at (?P<ts>.*)$')
+build_ends = re.compile(r'^Build ends at (?P<ts>.*),')
+action_starts = re.compile(r'^Action starts at (?P<ts>.*):$')
+action_ends = re.compile(r'^Action ends at (?P<ts>.*),')
+patterns = [
+ build_starts,
+ build_ends,
+ action_starts,
+ action_ends,
+]
+
+pairs = {
+ build_starts: build_ends,
+ build_ends: build_starts,
+ action_starts: action_ends,
+ action_ends: action_starts,
+}
+
+started = {
+ build_starts: None,
+ action_starts: None,
+}
+
+names = {
+ build_starts: 'Build',
+ action_starts: 'Action',
+}
+
+durations = []
+
+for line in sys.stdin:
+ for pat in patterns:
+ m = pat.match(line)
+ if m is None:
+ continue
+ ts = m.group('ts')
+
+ if pat in started:
+ started[pat] = parse_ts(ts)
+ else:
+ ended = parse_ts(ts)
+ start_pat = pairs[pat]
+ print(names[start_pat], ended - started[start_pat])
+ break