#!/usr/bin/env python3 # Copyright (C) 2018 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . 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.*)$') build_ends = re.compile(r'^Build ends at (?P.*),') action_starts = re.compile(r'^Action starts at (?P.*):$') action_ends = re.compile(r'^Action ends at (?P.*),') 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