"""Find matching devices for the supplied dp list"""

import json
import sys

from custom_components.tuya_local.helpers.device_config import possible_matches

from .common_funcs import FakeDevice


def main() -> int:
    dps = json.loads(" ".join(sys.argv[1:]))
    device = FakeDevice(dps)

    for match in possible_matches(dps):
        dps_seen = set(dps.keys())
        print(f"{match.config_type} matched {match.match_quality(dps)}%")
        for entity in match.all_entities():
            print(f"  {entity.config_id}:")
            for dp in entity.dps():
                dps_seen.discard(dp.id)
                print(f"    {dp.name}: {dp.get_value(device)}")
        for dp in dps_seen:
            print(f"  Missing {dp}: {dps[dp]}")


if __name__ == "__main__":
    sys.exit(main())
