Добавил fallback моделей из adb devices
Этот коммит содержится в:
@@ -14,6 +14,22 @@ def list_devices() -> dict:
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def _parse_adb_line_metadata(parts: list[str]) -> dict[str, str]:
|
||||||
|
metadata: dict[str, str] = {}
|
||||||
|
|
||||||
|
for part in parts[2:]:
|
||||||
|
if ':' not in part:
|
||||||
|
continue
|
||||||
|
key, value = part.split(':', 1)
|
||||||
|
metadata[key.strip()] = value.strip()
|
||||||
|
|
||||||
|
return metadata
|
||||||
|
|
||||||
|
|
||||||
|
def _pretty_token(value: str) -> str:
|
||||||
|
return value.replace('_', ' ').replace('-', ' ').strip()
|
||||||
|
|
||||||
|
|
||||||
def parse_devices(stdout: str) -> list[dict]:
|
def parse_devices(stdout: str) -> list[dict]:
|
||||||
devices: list[dict] = []
|
devices: list[dict] = []
|
||||||
|
|
||||||
@@ -28,6 +44,7 @@ def parse_devices(stdout: str) -> list[dict]:
|
|||||||
|
|
||||||
serial = parts[0]
|
serial = parts[0]
|
||||||
state = parts[1]
|
state = parts[1]
|
||||||
|
adb_meta = _parse_adb_line_metadata(parts)
|
||||||
|
|
||||||
if state != 'device':
|
if state != 'device':
|
||||||
devices.append({
|
devices.append({
|
||||||
@@ -39,13 +56,22 @@ def parse_devices(stdout: str) -> list[dict]:
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
props = get_device_props(serial)
|
props = get_device_props(serial)
|
||||||
brand = props.get('brand') or ''
|
brand = props.get('brand') or adb_meta.get('product') or ''
|
||||||
model = props.get('model') or ''
|
model = props.get('model') or adb_meta.get('model') or ''
|
||||||
device = props.get('device') or ''
|
device = props.get('device') or adb_meta.get('device') or ''
|
||||||
android = props.get('android') or ''
|
android = props.get('android') or ''
|
||||||
sdk = props.get('sdk') or ''
|
sdk = props.get('sdk') or ''
|
||||||
|
|
||||||
title = ' '.join(part for part in [brand, model] if part).strip() or serial
|
title_parts = []
|
||||||
|
if brand:
|
||||||
|
title_parts.append(_pretty_token(brand).title())
|
||||||
|
if model and model.lower() != brand.lower():
|
||||||
|
title_parts.append(_pretty_token(model))
|
||||||
|
if not title_parts and device:
|
||||||
|
title_parts.append(_pretty_token(device))
|
||||||
|
|
||||||
|
title = ' '.join(title_parts).strip() or serial
|
||||||
|
|
||||||
subtitle_parts = []
|
subtitle_parts = []
|
||||||
if android:
|
if android:
|
||||||
subtitle_parts.append(f'Android {android}')
|
subtitle_parts.append(f'Android {android}')
|
||||||
@@ -53,6 +79,8 @@ def parse_devices(stdout: str) -> list[dict]:
|
|||||||
subtitle_parts.append(f'SDK {sdk}')
|
subtitle_parts.append(f'SDK {sdk}')
|
||||||
if device:
|
if device:
|
||||||
subtitle_parts.append(device)
|
subtitle_parts.append(device)
|
||||||
|
if adb_meta.get('transport_id'):
|
||||||
|
subtitle_parts.append(f"transport {adb_meta['transport_id']}")
|
||||||
subtitle_parts.append(serial)
|
subtitle_parts.append(serial)
|
||||||
|
|
||||||
devices.append({
|
devices.append({
|
||||||
@@ -63,6 +91,7 @@ def parse_devices(stdout: str) -> list[dict]:
|
|||||||
'device': device,
|
'device': device,
|
||||||
'android': android,
|
'android': android,
|
||||||
'sdk': sdk,
|
'sdk': sdk,
|
||||||
|
'adb_meta': adb_meta,
|
||||||
'title': title,
|
'title': title,
|
||||||
'subtitle': ' · '.join(subtitle_parts),
|
'subtitle': ' · '.join(subtitle_parts),
|
||||||
})
|
})
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user