#!/usr/bin/env python3
# Copyright 2018 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from __future__ import print_function

import sys

import dbus
import flimflam

if len(sys.argv) < 3:
    print('Usage: %s <profile_name> <entry_name>' % (sys.argv[0]))
    sys.exit(1)

(_, profile_name, entry_name) = sys.argv

flim = flimflam.FlimFlam(dbus.SystemBus())

profile = flim.FindElementByNameSubstring('Profile', profile_name)
if profile is None:
    device = flim.FindElementByPropertySubstring('Profile',
                                                 'Interface',
                                                 profile_name)

print('Found profile %s' % (profile.object_path))

try:
    properties = profile.GetEntry(entry_name)
    for key in properties.keys():
        print('    %s = %s' %
              (key, flimflam.convert_dbus_value(properties[key], 4)))
except dbus.DBusException:
    print('Entry %s not found' % (entry_name))
