| #!/usr/bin/env python2 |
| # Copyright 2017 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. |
| """Parse the output of 'huddly-updater --info --log_to=stdout'. |
| """ |
| |
| from __future__ import print_function |
| |
| TOKEN_FW_CHUNK_HEADER = 'Firmware package:' |
| TOKEN_PERIPHERAL_CHUNK_HEADER = 'Camera Peripheral:' |
| TOKEN_BOOT = 'bootloader:' |
| TOKEN_APP = 'app:' |
| TOKEN_REV = 'hw_rev:' |
| |
| |
| def parse_fw_vers(chunk): |
| """Parse huddly-updater command output. |
| |
| The parser logic heavily depends on the output format. |
| |
| @param chunk: The huddly-updater output. See CHUNK_FILENAME for example. |
| |
| @returns a dictionary containing the version strings |
| for the firmware package and for the peripheral. |
| """ |
| dic = {} |
| target = '' |
| for line in chunk.split('\n'): |
| if TOKEN_FW_CHUNK_HEADER in line: |
| target = 'package' |
| dic[target] = {} |
| continue |
| elif TOKEN_PERIPHERAL_CHUNK_HEADER in line: |
| target = 'peripheral' |
| dic[target] = {} |
| continue |
| |
| if not target: |
| continue |
| |
| fields = line.split(':') |
| if fields.__len__() < 2: |
| continue |
| |
| val = fields[1].strip() |
| |
| if TOKEN_BOOT in line: |
| dic[target]['boot'] = val |
| elif TOKEN_APP in line: |
| dic[target]['app'] = val |
| elif TOKEN_REV in line: |
| dic[target]['hw_rev'] = val |
| else: |
| continue |
| |
| return dic |