58 lines
1.5 KiB
Python
Executable File
58 lines
1.5 KiB
Python
Executable File
#!/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
|