#!/usr/bin/python3
#
#   Copyright 2021 Canonical Ltd.
#   Author: Alberto Milone <alberto.milone@canonical.com>
#

import json
import re
import logging
import sys
import argparse



def _get_devices_from_data(data):
    devices = {}
    match = None
    for chip in data["chips"]:
        devices[chip.get('devid')] = chip
    return devices

def _supports_runtimepm(device):
    features = device.get('features')
    if features:
        return ('runtimepm' in features)
    return None

def _is_legacy(device):
    legacy = device.get('legacybranch')
    return legacy != None


def _get_supported_devices(data):
    supported_devices = []
    devices = _get_devices_from_data(data)
    for device in devices:
        if not _is_legacy(devices.get(device)):
            supported_devices.append(devices.get(device))
    return supported_devices

def print_devices(data):
    devices = _get_supported_devices(data)
    json_obj = {"chips":devices}
    json_str = json.dumps(json_obj)
    print(json_str)

def main(file_stream):
    logger = logging.basicConfig(level=logging.DEBUG, stream=sys.stdout)
    data = json.load(file_stream)

    print_devices(data)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('source', help='The .json source file to parse')
    args = parser.parse_args()

    with open(args.source) as f:
        main(f)
        f.close()
