Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
S2-group
GitHub Repository: S2-group/android-runner
Path: blob/master/AndroidRunner/Devices.py
629 views
1
import os.path as op
2
3
# This is basically a singleton
4
# https://stackoverflow.com/a/10936915
5
from . import Adb
6
from .Device import Device
7
from paths import ROOT_DIR
8
from .util import ConfigError, load_json
9
10
11
class Devices:
12
def __init__(self, devices, adb_path='adb', devices_spec=None):
13
if devices_spec is None:
14
devices_spec = op.join(ROOT_DIR, 'devices.json')
15
16
Adb.setup(adb_path)
17
mapping_file = load_json(devices_spec)
18
self._device_map = {n: mapping_file.get(n, None) for n in devices}
19
for name, device_id in list(self._device_map.items()):
20
if not device_id:
21
raise ConfigError(name)
22
self.devices = [Device(name, device_id, devices[name]) for name, device_id in list(self._device_map.items())]
23
24
def __iter__(self):
25
return iter(self.devices)
26
27
def get_device(self, name):
28
for device in self.devices:
29
if device.name == name:
30
return device
31
32
def names(self):
33
return list(self._device_map.keys())
34
35
def ids(self):
36
return list(self._device_map.values())
37
38
def get_id(self, name):
39
return self._device_map[name]
40
41
def get_name(self, device_id):
42
for k, v in list(self._device_map.items()):
43
if v == device_id:
44
return k
45
46