| #!/usr/bin/env python2 |
| # -*- coding: utf-8 -*- |
| # Copyright 2018 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Script to go through roafteriniter logs and output candidates.""" |
| |
| from __future__ import print_function |
| |
| import argparse |
| import collections |
| import sys |
| |
| LogEntry = collections.namedtuple('Logentry', ['varname', 'typename', 'fnname', |
| 'write_from_init']) |
| |
| |
| def get_parser(): |
| """Create and return an ArgumentParser instance.""" |
| parser = argparse.ArgumentParser(description=__doc__) |
| parser.add_argument('--fname', type=str, dest='fname', required=True, |
| help='Path to rai_final') |
| return parser |
| |
| |
| def main(args): |
| """main.""" |
| parser = get_parser() |
| opts = parser.parse_args(args) |
| |
| contents = open(opts.fname).readlines() |
| contents = sorted(set([i.strip() for i in contents])) |
| |
| field_value = lambda x: x.split(':')[1] |
| |
| all_entries = set() |
| for line in contents: |
| parts = line.strip().split() |
| le = LogEntry(field_value(parts[0]), field_value(parts[1]), |
| field_value(parts[2]), field_value(parts[3])) |
| all_entries.add(le) |
| |
| ok_vars, nk_vars = set(), set() |
| for entry in all_entries: |
| if entry.write_from_init == 'OK': |
| ok_vars.add((entry.varname, entry.typename)) |
| else: |
| nk_vars.add((entry.varname, entry.typename)) |
| |
| final = ok_vars - nk_vars |
| for each in final: |
| print(each) |
| |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv[1:])) |