From c7706b9aa3821580aca1431d432c14bfb22d7457 Mon Sep 17 00:00:00 2001 From: Tobias Sterbak Date: Thu, 23 Mar 2023 11:37:15 +0000 Subject: [PATCH 1/2] Supported device codes for a config are now a list; config is loaded based on this --- .../assets/configs/avicii.yaml | 7 ++- .../assets/configs/cheeseburger.yaml | 7 ++- openandroidinstaller/assets/configs/d2s.yaml | 6 +- openandroidinstaller/assets/configs/dre.yaml | 7 ++- .../assets/configs/dumpling.yaml | 7 ++- .../assets/configs/enchilada.yaml | 7 ++- .../assets/configs/fajita.yaml | 7 ++- .../assets/configs/guacamole.yaml | 7 ++- .../assets/configs/guacamoleb.yaml | 7 ++- .../assets/configs/hotdog.yaml | 7 ++- .../assets/configs/hotdogb.yaml | 7 ++- .../assets/configs/sargo.yaml | 6 +- openandroidinstaller/assets/configs/yuga.yaml | 7 ++- openandroidinstaller/installer_config.py | 55 ++++++++----------- openandroidinstaller/utils.py | 8 +-- openandroidinstaller/views/select_view.py | 9 +-- openandroidinstaller/views/start_view.py | 4 +- 17 files changed, 94 insertions(+), 71 deletions(-) diff --git a/openandroidinstaller/assets/configs/avicii.yaml b/openandroidinstaller/assets/configs/avicii.yaml index 99cc545f..beb9e933 100644 --- a/openandroidinstaller/assets/configs/avicii.yaml +++ b/openandroidinstaller/assets/configs/avicii.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: OnePlus Nord - devicecode: avicii + device_name: OnePlus Nord + device_code: avicii + supported_device_codes: + - avicii + - Nord requirements: android: 10 steps: diff --git a/openandroidinstaller/assets/configs/cheeseburger.yaml b/openandroidinstaller/assets/configs/cheeseburger.yaml index 6a825fa9..a357ecb1 100644 --- a/openandroidinstaller/assets/configs/cheeseburger.yaml +++ b/openandroidinstaller/assets/configs/cheeseburger.yaml @@ -1,7 +1,10 @@ metadata: maintainer: SirRGB - devicename: OnePlus 5 - devicecode: cheeseburger + device_name: OnePlus 5 + device_code: cheeseburger + supported_device_codes: + - cheeseburger + - OnePlus5 twrp-link: cheeseburger_dumpling steps: unlock_bootloader: diff --git a/openandroidinstaller/assets/configs/d2s.yaml b/openandroidinstaller/assets/configs/d2s.yaml index 07bd6819..08b59a47 100644 --- a/openandroidinstaller/assets/configs/d2s.yaml +++ b/openandroidinstaller/assets/configs/d2s.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy Note 10+ - devicecode: d2s + device_name: Samsung Galaxy Note 10+ + device_code: d2s + supported_device_codes: + - d2s requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/dre.yaml b/openandroidinstaller/assets/configs/dre.yaml index 1b8be02a..f9994757 100644 --- a/openandroidinstaller/assets/configs/dre.yaml +++ b/openandroidinstaller/assets/configs/dre.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: OnePlus Nord N200 - devicecode: dre + device_name: OnePlus Nord N200 + device_code: dre + supported_device_codes: + - dre + - NordN200 requirements: android: 11 steps: diff --git a/openandroidinstaller/assets/configs/dumpling.yaml b/openandroidinstaller/assets/configs/dumpling.yaml index a2324245..e358b8a7 100644 --- a/openandroidinstaller/assets/configs/dumpling.yaml +++ b/openandroidinstaller/assets/configs/dumpling.yaml @@ -1,7 +1,10 @@ metadata: maintainer: SirRGB - devicename: OnePlus 5T - devicecode: dumpling + device_name: OnePlus 5T + device_code: dumpling + supported_device_codes: + - dumpling + - OnePlus5T twrp-link: cheeseburger_dumpling steps: unlock_bootloader: diff --git a/openandroidinstaller/assets/configs/enchilada.yaml b/openandroidinstaller/assets/configs/enchilada.yaml index e1da4282..e1eeae7f 100644 --- a/openandroidinstaller/assets/configs/enchilada.yaml +++ b/openandroidinstaller/assets/configs/enchilada.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: OnePlus 6 - devicecode: enchilada + device_name: OnePlus 6 + device_code: enchilada + supported_device_codes: + - enchilada + - OnePlus6 requirements: android: 11 steps: diff --git a/openandroidinstaller/assets/configs/fajita.yaml b/openandroidinstaller/assets/configs/fajita.yaml index 8ce4c1a2..2bfb76f1 100644 --- a/openandroidinstaller/assets/configs/fajita.yaml +++ b/openandroidinstaller/assets/configs/fajita.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: OnePlus 6T - devicecode: fajita + device_name: OnePlus 6T + device_code: fajita + supported_device_codes: + - fajita + - OnePlus6T requirements: android: 11 steps: diff --git a/openandroidinstaller/assets/configs/guacamole.yaml b/openandroidinstaller/assets/configs/guacamole.yaml index 129d7b98..8aeec6f0 100644 --- a/openandroidinstaller/assets/configs/guacamole.yaml +++ b/openandroidinstaller/assets/configs/guacamole.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: OnePlus 7 Pro - devicecode: guacamole + device_name: OnePlus 7 Pro + device_code: guacamole + supported_device_codes: + - guacamole + - OnePlus7Pro requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/guacamoleb.yaml b/openandroidinstaller/assets/configs/guacamoleb.yaml index e39c9378..264d5e0d 100644 --- a/openandroidinstaller/assets/configs/guacamoleb.yaml +++ b/openandroidinstaller/assets/configs/guacamoleb.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: OnePlus 7 - devicecode: guacamoleb + device_name: OnePlus 7 + device_code: guacamoleb + supported_device_codes: + - guacamoleb + - OnePlus7 requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/hotdog.yaml b/openandroidinstaller/assets/configs/hotdog.yaml index 15cc7015..676ecc1e 100644 --- a/openandroidinstaller/assets/configs/hotdog.yaml +++ b/openandroidinstaller/assets/configs/hotdog.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: OnePlus 7T Pro - devicecode: hotdog + device_name: OnePlus 7T Pro + device_code: hotdog + supported_device_codes: + - hotdog + - OnePlus7TPro requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/hotdogb.yaml b/openandroidinstaller/assets/configs/hotdogb.yaml index da1c487a..be3773aa 100644 --- a/openandroidinstaller/assets/configs/hotdogb.yaml +++ b/openandroidinstaller/assets/configs/hotdogb.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: OnePlus 7T - devicecode: hotdogb + device_name: OnePlus 7T + device_code: hotdogb + supported_device_codes: + - hotdogb + - OnePlus7T requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/sargo.yaml b/openandroidinstaller/assets/configs/sargo.yaml index 2e19de38..c4515fbd 100644 --- a/openandroidinstaller/assets/configs/sargo.yaml +++ b/openandroidinstaller/assets/configs/sargo.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Pixel 3a - devicecode: sargo + device_name: Pixel 3a + device_code: sargo + supported_device_codes: + - sargo requirements: android: 12.1.0 steps: diff --git a/openandroidinstaller/assets/configs/yuga.yaml b/openandroidinstaller/assets/configs/yuga.yaml index 16409933..00df8601 100644 --- a/openandroidinstaller/assets/configs/yuga.yaml +++ b/openandroidinstaller/assets/configs/yuga.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Sony Xperia Z - devicecode: yuga + device_name: Sony Xperia Z + device_code: yuga + supported_device_codes: + - yuga + - C6603 steps: unlock_bootloader: - type: confirm_button diff --git a/openandroidinstaller/installer_config.py b/openandroidinstaller/installer_config.py index 62aa1a01..520616fc 100644 --- a/openandroidinstaller/installer_config.py +++ b/openandroidinstaller/installer_config.py @@ -50,23 +50,6 @@ def __init__( class InstallerConfig: - # map some detected device codes to their real code. - device_code_mapping: Dict[str, str] = { - # Sony issues - "C6603": "yuga", - # OnePlus issues - "OnePlus5": "cheeseburger", - "OnePlus5T": "dumpling", - "OnePlus6": "enchilada", - "OnePlus6T": "fajita", - "OnePlus7": "guacamoleb", - "OnePlus7Pro": "guacamole", - "OnePlus7T": "hotdogb", - "OnePlus7TPro": "hotdog", - "Nord": "avicii", - "NordN200": "dre", - } - def __init__( self, unlock_bootloader: List[Step], @@ -78,15 +61,10 @@ def __init__( self.flash_recovery = flash_recovery self.metadata = metadata self.requirements = requirements - self.device_code = metadata.get("devicecode") + self.device_code = metadata.get("device_code") + self.supported_device_codes = metadata.get("supported_device_codes") self.twrp_link = metadata.get("twrp-link") - # manage device codes and alternative device codes/names - inverted_mapping: Dict[str, str] = dict(map(reversed, self.device_code_mapping.items())) # type: ignore - self.alternative_device_code = inverted_mapping.get( - self.device_code, self.device_code # type: ignore - ) - @classmethod def from_file(cls, path): with open(path, "r", encoding="utf-8") as stream: @@ -118,17 +96,27 @@ def from_file(cls, path): return cls(unlock_bootloader, flash_recovery, metadata, requirements) +def _find_config_file(device_code: str, config_path: Path) -> Optional[Path]: + """Find the config file which is supported by the given device code.""" + for path in config_path.rglob("*.yaml"): + with open(path, "r", encoding="utf-8") as stream: + try: + raw_config = dict(yaml.safe_load(stream)) + if device_code in raw_config.get("metadata", dict()).get("supported_device_codes", []): + logger.info(f"Device code '{device_code}' is supported by config '{path}'.") + return path + except: + pass + return None + + def _load_config(device_code: str, config_path: Path) -> Optional[InstallerConfig]: """ Function to load a function from given path and directory path. Try to load local file in the same directory as the executable first, then load from assets. """ - # try loading a custom local file first - mapped_device_code = InstallerConfig.device_code_mapping.get( - device_code, device_code - ) - custom_path = Path.cwd().joinpath(Path(f"{mapped_device_code}.yaml")) + custom_path = _find_config_file(device_code, config_path=Path.cwd()) try: config = InstallerConfig.from_file(custom_path) logger.info(f"Loaded custom device config from {custom_path}.") @@ -136,7 +124,9 @@ def _load_config(device_code: str, config_path: Path) -> Optional[InstallerConfi return config except FileNotFoundError: # if no localfile, then try to load a config file from assets - path = config_path.joinpath(Path(f"{mapped_device_code}.yaml")) + path = _find_config_file(device_code, config_path) + + # path = config_path.joinpath(Path(f"{mapped_device_code}.yaml")) try: config = InstallerConfig.from_file(path) logger.info(f"Loaded device config from {path}.") @@ -168,8 +158,9 @@ def validate_config(config: str) -> bool: { "metadata": { "maintainer": str, - "devicename": str, - "devicecode": str, + "device_name": str, + "device_code": str, + "supported_device_codes": [str], schema.Optional("twrp-link"): str, }, schema.Optional("requirements"): { diff --git a/openandroidinstaller/utils.py b/openandroidinstaller/utils.py index 7a83cb83..bc317041 100644 --- a/openandroidinstaller/utils.py +++ b/openandroidinstaller/utils.py @@ -14,7 +14,7 @@ # Author: Tobias Sterbak import zipfile -from typing import Optional +from typing import Optional, List import requests from loguru import logger @@ -40,7 +40,7 @@ def get_download_link(devicecode: str) -> Optional[str]: def image_works_with_device( - device_code: str, alternative_device_code: str, image_path: str + supported_device_codes: List[str], image_path: str ) -> bool: """Determine if an image works for the given device.""" with zipfile.ZipFile(image_path) as image_zip: @@ -51,9 +51,7 @@ def image_works_with_device( supported_devices = str(metadata[-1]).split("=")[-1][:-3].split(",") logger.info(f"Image works with device: {supported_devices}") - if (device_code in supported_devices) or ( - alternative_device_code in supported_devices - ): + if any(code in supported_devices for code in supported_device_codes): logger.success("Device supported by the selected image.") return True else: diff --git a/openandroidinstaller/views/select_view.py b/openandroidinstaller/views/select_view.py index 705880b9..ac65fd5d 100644 --- a/openandroidinstaller/views/select_view.py +++ b/openandroidinstaller/views/select_view.py @@ -115,7 +115,7 @@ def build(self): # download link self.download_link = get_download_link( - self.state.config.metadata.get("devicecode", "ERROR") + self.state.config.metadata.get("device_code", "NOTFOUND") ) # attach hidden dialogues @@ -256,10 +256,8 @@ def pick_image_result(self, e: FilePickerResultEvent): logger.info("No image selected.") # check if the image works with the device and show the filename in different colors accordingly if e.files: - device_code = self.state.config.device_code if image_works_with_device( - device_code=device_code, - alternative_device_code=self.state.config.alternative_device_code, + supported_device_codes=self.state.config.supported_device_codes, image_path=self.state.image_path, ): self.selected_image.color = colors.GREEN @@ -300,8 +298,7 @@ def enable_button_if_ready(self, e): device_code = self.state.config.device_code if not ( image_works_with_device( - device_code=device_code, - alternative_device_code=self.state.config.alternative_device_code, + supported_device_codes=self.state.config.supported_device_codes, image_path=self.state.image_path, ) and recovery_works_with_device( diff --git a/openandroidinstaller/views/start_view.py b/openandroidinstaller/views/start_view.py index 44c6d6c8..57e4d3c5 100644 --- a/openandroidinstaller/views/start_view.py +++ b/openandroidinstaller/views/start_view.py @@ -244,7 +244,7 @@ def search_devices(self, e): self.state.is_ab = is_ab if self.state.config: device_name = self.state.config.metadata.get( - "devicename", "No device name in config." + "device_name", "No device name in config." ) else: device_name = None @@ -254,7 +254,7 @@ def search_devices(self, e): self.continue_button.disabled = False self.bootloader_switch.disabled = False # overwrite the text field with the real name from the config - self.device_name.value = f"{device_name} (code: {InstallerConfig.device_code_mapping.get(device_code, device_code)})" + self.device_name.value = f"{device_name} (code: {self.state.config.device_code})" self.device_name.color = colors.GREEN else: # failed to load config From 13a9751202cb305230b68d2a1a016cd9871fc072 Mon Sep 17 00:00:00 2001 From: Tobias Sterbak Date: Thu, 23 Mar 2023 12:05:58 +0000 Subject: [PATCH 2/2] Update test and fix configs --- README.md | 7 +++--- openandroidinstaller/assets/configs/FP2.yaml | 6 +++-- openandroidinstaller/assets/configs/FP3.yaml | 6 +++-- openandroidinstaller/assets/configs/FP4.yaml | 6 +++-- .../assets/configs/a3y17lte.yaml | 6 +++-- .../assets/configs/a5xelte.yaml | 6 +++-- openandroidinstaller/assets/configs/a72q.yaml | 6 +++-- .../assets/configs/a7xelte.yaml | 6 +++-- .../assets/configs/akari.yaml | 6 +++-- .../assets/configs/akatsuki.yaml | 6 +++-- .../assets/configs/barbet.yaml | 6 +++-- .../assets/configs/beyond0lte.yaml | 6 +++-- .../assets/configs/beyond1lte.yaml | 6 +++-- .../assets/configs/beyond2lte.yaml | 6 +++-- .../assets/configs/blueline.yaml | 6 +++-- .../assets/configs/bonito.yaml | 6 +++-- .../assets/configs/cedric.yaml | 6 +++-- .../assets/configs/coral.yaml | 6 +++-- .../assets/configs/crosshatch.yaml | 6 +++-- .../assets/configs/crownlte.yaml | 6 +++-- openandroidinstaller/assets/configs/d1.yaml | 6 +++-- .../assets/configs/evert.yaml | 6 +++-- .../assets/configs/flame.yaml | 6 +++-- .../assets/configs/greatlte.yaml | 6 +++-- .../assets/configs/griffin.yaml | 6 +++-- .../assets/configs/hero2lte.yaml | 6 +++-- .../assets/configs/herolte.yaml | 7 ++++-- .../assets/configs/heroltexx.yaml | 22 ------------------- .../assets/configs/hltetmo.yaml | 6 +++-- .../assets/configs/j7elte.yaml | 6 +++-- openandroidinstaller/assets/configs/kiev.yaml | 6 +++-- .../assets/configs/kirin.yaml | 6 +++-- .../assets/configs/mermaid.yaml | 6 +++-- .../assets/configs/nairo.yaml | 6 +++-- .../assets/configs/ocean.yaml | 6 +++-- .../assets/configs/pioneer.yaml | 6 +++-- .../assets/configs/racer.yaml | 6 +++-- .../assets/configs/redfin.yaml | 6 +++-- .../assets/configs/s3ve3g.yaml | 6 +++-- .../assets/configs/starlte.yaml | 6 +++-- .../assets/configs/sunfish.yaml | 6 +++-- .../assets/configs/taimen.yaml | 6 +++-- .../assets/configs/walleye.yaml | 6 +++-- openandroidinstaller/assets/configs/z3.yaml | 6 +++-- .../assets/configs/zerofltexx.yaml | 6 +++-- .../assets/configs/zeroltexx.yaml | 6 +++-- openandroidinstaller/installer_config.py | 20 +++++++++-------- openandroidinstaller/utils.py | 4 +--- openandroidinstaller/views/start_view.py | 5 +++-- tests/test_configs.py | 2 +- 50 files changed, 197 insertions(+), 128 deletions(-) delete mode 100644 openandroidinstaller/assets/configs/heroltexx.yaml diff --git a/README.md b/README.md index 55ffa6db..86998452 100644 --- a/README.md +++ b/README.md @@ -185,7 +185,7 @@ All kinds of contributions are welcome. These include: ### How to contribute your own installation configurations -If you want to use the tool for a non-supported smartphone, the fastest way is to adapt an [existing config file](https://github.com/openandroidinstaller-dev/openandroidinstaller/tree/main/openandroidinstaller/assets/configs). The file should be named after the `device code` of your device. This is in general the output by `adb shell getprop | grep ro.product.device` when the devices is connected to the computer. You can also get the device code by connecting the device to the computer and run OpenAndroidInstaller to detect the device. +If you want to use the tool for a non-supported smartphone, the fastest way is to adapt an [existing config file](https://github.com/openandroidinstaller-dev/openandroidinstaller/tree/main/openandroidinstaller/assets/configs). The file should be named after the official `device code` of the device. Add the code output by `adb shell getprop | grep ro.product.device` (when the devices is connected to the computer) as well as the official device code to the `supported_device_codes` list in the config. You can also get the device code by connecting the device to the computer and run OpenAndroidInstaller to detect the device. **To test your config file with the executable** without using the developer setup, place it in the same directory as the executable. There it will be detected by name. After you created a config file and it works fine, you can open a pull request to make the file available to other users. Please also add the device to the supported devices table above. @@ -196,8 +196,9 @@ A config file consists of two parts. The first part are some metadata about the ##### How to write Metadata Every config file should have metadata with the following fields: - `maintainer`: str; Maintainer and author of the config file. -- `devicename`: str; Name of the device. -- `devicecode`: str; The official device code. +- `device_name`: str; Name of the device. +- `device_code`: str; The official device code. +- `supported_device_codes`: List[str]; A list of supported device codes for the config. The config will be loaded based on this field. - `twrp-link`: [OPTIONAL] str; name of the corresponding twrp page. In addition to these metadata, every config can have optional requirements. If these are set, the user is asked to check if they are meet. diff --git a/openandroidinstaller/assets/configs/FP2.yaml b/openandroidinstaller/assets/configs/FP2.yaml index 8149c8b4..c9be273c 100644 --- a/openandroidinstaller/assets/configs/FP2.yaml +++ b/openandroidinstaller/assets/configs/FP2.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Fairphone 2 - devicecode: FP2 + device_name: Fairphone 2 + device_code: FP2 + supported_device_codes: + - FP2 steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/FP3.yaml b/openandroidinstaller/assets/configs/FP3.yaml index 5fc45c57..cee65ccb 100644 --- a/openandroidinstaller/assets/configs/FP3.yaml +++ b/openandroidinstaller/assets/configs/FP3.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Fairphone 3 - devicecode: FP3 + device_name: Fairphone 3 + device_code: FP3 + supported_device_codes: + - FP3 steps: unlock_bootloader: - type: link_button_with_confirm diff --git a/openandroidinstaller/assets/configs/FP4.yaml b/openandroidinstaller/assets/configs/FP4.yaml index a5f5c436..172371ea 100644 --- a/openandroidinstaller/assets/configs/FP4.yaml +++ b/openandroidinstaller/assets/configs/FP4.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Fairphone 4 - devicecode: FP4 + device_name: Fairphone 4 + device_code: FP4 + supported_device_codes: + - FP4 steps: unlock_bootloader: - type: link_button_with_confirm diff --git a/openandroidinstaller/assets/configs/a3y17lte.yaml b/openandroidinstaller/assets/configs/a3y17lte.yaml index 940746dc..1c2a49e6 100644 --- a/openandroidinstaller/assets/configs/a3y17lte.yaml +++ b/openandroidinstaller/assets/configs/a3y17lte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy A3 (2017) - devicecode: a3y17lte + device_name: Samsung Galaxy A3 (2017) + device_code: a3y17lte + supported_device_codes: + - a3y17lte steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/a5xelte.yaml b/openandroidinstaller/assets/configs/a5xelte.yaml index 4d4d40bb..9042624e 100644 --- a/openandroidinstaller/assets/configs/a5xelte.yaml +++ b/openandroidinstaller/assets/configs/a5xelte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy A5 (2016) - devicecode: a5xelte + device_name: Samsung Galaxy A5 (2016) + device_code: a5xelte + supported_device_codes: + - a5xelte steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/a72q.yaml b/openandroidinstaller/assets/configs/a72q.yaml index 3d1290a0..7655294f 100644 --- a/openandroidinstaller/assets/configs/a72q.yaml +++ b/openandroidinstaller/assets/configs/a72q.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy A72 - devicecode: a72q + device_name: Samsung Galaxy A72 + device_code: a72q + supported_device_codes: + - a72q steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/a7xelte.yaml b/openandroidinstaller/assets/configs/a7xelte.yaml index 4f680c97..873375ff 100644 --- a/openandroidinstaller/assets/configs/a7xelte.yaml +++ b/openandroidinstaller/assets/configs/a7xelte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy A7 (2016) - devicecode: a7xelte + device_name: Samsung Galaxy A7 (2016) + device_code: a7xelte + supported_device_codes: + - a7xelte steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/akari.yaml b/openandroidinstaller/assets/configs/akari.yaml index 8e971d37..44561b61 100644 --- a/openandroidinstaller/assets/configs/akari.yaml +++ b/openandroidinstaller/assets/configs/akari.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Sony Xperia XZ2 - devicecode: akari + device_name: Sony Xperia XZ2 + device_code: akari + supported_device_codes: + - akari requirements: android: 10 steps: diff --git a/openandroidinstaller/assets/configs/akatsuki.yaml b/openandroidinstaller/assets/configs/akatsuki.yaml index ecafe733..4226bfdd 100644 --- a/openandroidinstaller/assets/configs/akatsuki.yaml +++ b/openandroidinstaller/assets/configs/akatsuki.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Sony Xperia XZ3 - devicecode: akatsuki + device_name: Sony Xperia XZ3 + device_code: akatsuki + supported_device_codes: + - akatsuki requirements: android: 10 steps: diff --git a/openandroidinstaller/assets/configs/barbet.yaml b/openandroidinstaller/assets/configs/barbet.yaml index 8471f0de..cca4b77b 100644 --- a/openandroidinstaller/assets/configs/barbet.yaml +++ b/openandroidinstaller/assets/configs/barbet.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Pixel 5a - devicecode: barbet + device_name: Pixel 5a + device_code: barbet + supported_device_codes: + - barbet requirements: android: 12.1.0 steps: diff --git a/openandroidinstaller/assets/configs/beyond0lte.yaml b/openandroidinstaller/assets/configs/beyond0lte.yaml index 01bf3524..a80bf3cd 100644 --- a/openandroidinstaller/assets/configs/beyond0lte.yaml +++ b/openandroidinstaller/assets/configs/beyond0lte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S10e - devicecode: beyond0lte + device_name: Samsung Galaxy S10e + device_code: beyond0lte + supported_device_codes: + - beyond0lte requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/beyond1lte.yaml b/openandroidinstaller/assets/configs/beyond1lte.yaml index 914d178e..8f72c0ea 100644 --- a/openandroidinstaller/assets/configs/beyond1lte.yaml +++ b/openandroidinstaller/assets/configs/beyond1lte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S10 - devicecode: beyond1lte + device_name: Samsung Galaxy S10 + device_code: beyond1lte + supported_device_codes: + - beyond1lte requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/beyond2lte.yaml b/openandroidinstaller/assets/configs/beyond2lte.yaml index ff8a529a..9d24225c 100644 --- a/openandroidinstaller/assets/configs/beyond2lte.yaml +++ b/openandroidinstaller/assets/configs/beyond2lte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S10+ - devicecode: beyond2lte + device_name: Samsung Galaxy S10+ + device_code: beyond2lte + supported_device_codes: + - beyond2lte requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/blueline.yaml b/openandroidinstaller/assets/configs/blueline.yaml index 680d63c5..b7b248ce 100644 --- a/openandroidinstaller/assets/configs/blueline.yaml +++ b/openandroidinstaller/assets/configs/blueline.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Google Pixel 3 - devicecode: blueline + device_name: Google Pixel 3 + device_code: blueline + supported_device_codes: + - blueline requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/bonito.yaml b/openandroidinstaller/assets/configs/bonito.yaml index 694ce1cc..ae057412 100644 --- a/openandroidinstaller/assets/configs/bonito.yaml +++ b/openandroidinstaller/assets/configs/bonito.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Google Pixel 3a XL - devicecode: bonito + device_name: Google Pixel 3a XL + device_code: bonito + supported_device_codes: + - bonito requirements: android: 12.1.0 steps: diff --git a/openandroidinstaller/assets/configs/cedric.yaml b/openandroidinstaller/assets/configs/cedric.yaml index bb260c21..3a0a8ea6 100644 --- a/openandroidinstaller/assets/configs/cedric.yaml +++ b/openandroidinstaller/assets/configs/cedric.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Motorola Moto G5 - devicecode: cedric + device_name: Motorola Moto G5 + device_code: cedric + supported_device_codes: + - cedric steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/assets/configs/coral.yaml b/openandroidinstaller/assets/configs/coral.yaml index e9647828..38cfce01 100644 --- a/openandroidinstaller/assets/configs/coral.yaml +++ b/openandroidinstaller/assets/configs/coral.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Google Pixel 4 XL - devicecode: coral + device_name: Google Pixel 4 XL + device_code: coral + supported_device_codes: + - coral requirements: android: 13 steps: diff --git a/openandroidinstaller/assets/configs/crosshatch.yaml b/openandroidinstaller/assets/configs/crosshatch.yaml index a4a485a2..ec65a723 100644 --- a/openandroidinstaller/assets/configs/crosshatch.yaml +++ b/openandroidinstaller/assets/configs/crosshatch.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Google Pixel 3 XL - devicecode: crosshatch + device_name: Google Pixel 3 XL + device_code: crosshatch + supported_device_codes: + - crosshatch requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/crownlte.yaml b/openandroidinstaller/assets/configs/crownlte.yaml index 8b759e6b..5c651007 100644 --- a/openandroidinstaller/assets/configs/crownlte.yaml +++ b/openandroidinstaller/assets/configs/crownlte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy Note 9 - devicecode: crownlte + device_name: Samsung Galaxy Note 9 + device_code: crownlte + supported_device_codes: + - crownlte requirements: android: 10 steps: diff --git a/openandroidinstaller/assets/configs/d1.yaml b/openandroidinstaller/assets/configs/d1.yaml index 8ae30aeb..277f7921 100644 --- a/openandroidinstaller/assets/configs/d1.yaml +++ b/openandroidinstaller/assets/configs/d1.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy Note 10 - devicecode: d1 + device_name: Samsung Galaxy Note 10 + device_code: d1 + supported_device_codes: + - d1 requirements: android: 12 steps: diff --git a/openandroidinstaller/assets/configs/evert.yaml b/openandroidinstaller/assets/configs/evert.yaml index 790c1e0f..6e858284 100644 --- a/openandroidinstaller/assets/configs/evert.yaml +++ b/openandroidinstaller/assets/configs/evert.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Motorola moto g6 plus - devicecode: evert + device_name: Motorola moto g6 plus + device_code: evert + supported_device_codes: + - evert steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/assets/configs/flame.yaml b/openandroidinstaller/assets/configs/flame.yaml index 2bbd5d31..e0a09057 100644 --- a/openandroidinstaller/assets/configs/flame.yaml +++ b/openandroidinstaller/assets/configs/flame.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Pixel 4 - devicecode: flame + device_name: Pixel 4 + device_code: flame + supported_device_codes: + - flame requirements: android: 13 steps: diff --git a/openandroidinstaller/assets/configs/greatlte.yaml b/openandroidinstaller/assets/configs/greatlte.yaml index 01e54325..b1bb6dcd 100644 --- a/openandroidinstaller/assets/configs/greatlte.yaml +++ b/openandroidinstaller/assets/configs/greatlte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Michel Memeteau (freechelmi) - devicename: Samsung Galaxy note 8 - devicecode: greatlte + device_name: Samsung Galaxy note 8 + device_code: greatlte + supported_device_codes: + - greatlte steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/griffin.yaml b/openandroidinstaller/assets/configs/griffin.yaml index 36d18192..216abd1c 100644 --- a/openandroidinstaller/assets/configs/griffin.yaml +++ b/openandroidinstaller/assets/configs/griffin.yaml @@ -1,7 +1,9 @@ metadata: maintainer: SirRGB - devicename: Motorola Moto Z - devicecode: griffin + device_name: Motorola Moto Z + device_code: griffin + supported_device_codes: + - griffin steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/assets/configs/hero2lte.yaml b/openandroidinstaller/assets/configs/hero2lte.yaml index 4ec35346..a5597048 100644 --- a/openandroidinstaller/assets/configs/hero2lte.yaml +++ b/openandroidinstaller/assets/configs/hero2lte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S7 Edge - devicecode: hero2lte + device_name: Samsung Galaxy S7 Edge + device_code: hero2lte + supported_device_codes: + - hero2lte steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/herolte.yaml b/openandroidinstaller/assets/configs/herolte.yaml index 4dcf7f8b..a26a5eb8 100644 --- a/openandroidinstaller/assets/configs/herolte.yaml +++ b/openandroidinstaller/assets/configs/herolte.yaml @@ -1,7 +1,10 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S7 - devicecode: herolte + device_name: Samsung Galaxy S7 + device_code: herolte + supported_device_codes: + - herolte + - heroltexx steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/heroltexx.yaml b/openandroidinstaller/assets/configs/heroltexx.yaml deleted file mode 100644 index 4dcf7f8b..00000000 --- a/openandroidinstaller/assets/configs/heroltexx.yaml +++ /dev/null @@ -1,22 +0,0 @@ -metadata: - maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S7 - devicecode: herolte -steps: - unlock_bootloader: - flash_recovery: - - type: call_button - content: > - As a first step, you need to boot into the bootloader. A bootloader is the piece of software, - that tells your phone who to start and run an operating system (like Android). Your device should be turned on. - Then press 'Confirm and run' to reboot into the bootloader. Continue once it's done. - command: adb_reboot_download - - type: call_button - content: In this step, you need to flash a custom recovery on your device. Press 'Confirm and run' to start the process. Confirm afterwards to continue. - command: heimdall_flash_recovery - - type: confirm_button - img: samsung-buttons.png - content: > - Unplug the USB cable from your device. Then manually reboot into recovery by pressing the *Volume Down* + *Power buttons* for 8~10 seconds - until the screen turns black & release the buttons immediately when it does, then boot to recovery with the device powered off, - hold *Volume Up* + *Home* + *Power button*. \ No newline at end of file diff --git a/openandroidinstaller/assets/configs/hltetmo.yaml b/openandroidinstaller/assets/configs/hltetmo.yaml index dc5c6eb1..4d7b2947 100644 --- a/openandroidinstaller/assets/configs/hltetmo.yaml +++ b/openandroidinstaller/assets/configs/hltetmo.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy Note 3 LTE (N900T/V/W8) - devicecode: hltetmo + device_name: Samsung Galaxy Note 3 LTE (N900T/V/W8) + device_code: hltetmo + supported_device_codes: + - hltetmo steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/j7elte.yaml b/openandroidinstaller/assets/configs/j7elte.yaml index 99390c17..afc88f19 100644 --- a/openandroidinstaller/assets/configs/j7elte.yaml +++ b/openandroidinstaller/assets/configs/j7elte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy J7 (2015) - devicecode: j7elte + device_name: Samsung Galaxy J7 (2015) + device_code: j7elte + supported_device_codes: + - j7elte steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/kiev.yaml b/openandroidinstaller/assets/configs/kiev.yaml index 607a16a4..4961c85e 100644 --- a/openandroidinstaller/assets/configs/kiev.yaml +++ b/openandroidinstaller/assets/configs/kiev.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Motorola moto g 5G / one 5G ace - devicecode: kiev + device_name: Motorola moto g 5G / one 5G ace + device_code: kiev + supported_device_codes: + - kiev steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/assets/configs/kirin.yaml b/openandroidinstaller/assets/configs/kirin.yaml index 6418fbaf..fe5297a9 100644 --- a/openandroidinstaller/assets/configs/kirin.yaml +++ b/openandroidinstaller/assets/configs/kirin.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Sony Xperia 10 - devicecode: kirin + device_name: Sony Xperia 10 + device_code: kirin + supported_device_codes: + - kirin steps: unlock_bootloader: - type: confirm_button diff --git a/openandroidinstaller/assets/configs/mermaid.yaml b/openandroidinstaller/assets/configs/mermaid.yaml index 8a0861ef..9b9c699e 100644 --- a/openandroidinstaller/assets/configs/mermaid.yaml +++ b/openandroidinstaller/assets/configs/mermaid.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Sony Xperia 10 Plus - devicecode: mermaid + device_name: Sony Xperia 10 Plus + device_code: mermaid + supported_device_codes: + - mermaid steps: unlock_bootloader: - type: confirm_button diff --git a/openandroidinstaller/assets/configs/nairo.yaml b/openandroidinstaller/assets/configs/nairo.yaml index 968aafef..5217ea43 100644 --- a/openandroidinstaller/assets/configs/nairo.yaml +++ b/openandroidinstaller/assets/configs/nairo.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Motorola moto g 5G plus / one 5G - devicecode: nairo + device_name: Motorola moto g 5G plus / one 5G + device_code: nairo + supported_device_codes: + - nairo steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/assets/configs/ocean.yaml b/openandroidinstaller/assets/configs/ocean.yaml index 0d9dceee..8d56935a 100644 --- a/openandroidinstaller/assets/configs/ocean.yaml +++ b/openandroidinstaller/assets/configs/ocean.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Motorola Moto G7 power - devicecode: ocean + device_name: Motorola Moto G7 power + device_code: ocean + supported_device_codes: + - ocean steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/assets/configs/pioneer.yaml b/openandroidinstaller/assets/configs/pioneer.yaml index a5ea1fbc..a12c20ab 100644 --- a/openandroidinstaller/assets/configs/pioneer.yaml +++ b/openandroidinstaller/assets/configs/pioneer.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Sony Xperia XA2 - devicecode: pioneer + device_name: Sony Xperia XA2 + device_code: pioneer + supported_device_codes: + - pioneer requirements: android: 9 steps: diff --git a/openandroidinstaller/assets/configs/racer.yaml b/openandroidinstaller/assets/configs/racer.yaml index 50d888d8..5cd0b258 100644 --- a/openandroidinstaller/assets/configs/racer.yaml +++ b/openandroidinstaller/assets/configs/racer.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Motorola edge - devicecode: racer + device_name: Motorola edge + device_code: racer + supported_device_codes: + - racer steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/assets/configs/redfin.yaml b/openandroidinstaller/assets/configs/redfin.yaml index df12f3b4..7f0d022d 100644 --- a/openandroidinstaller/assets/configs/redfin.yaml +++ b/openandroidinstaller/assets/configs/redfin.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Pixel 5 - devicecode: redfin + device_name: Pixel 5 + device_code: redfin + supported_device_codes: + - redfin requirements: android: 12.1.0 steps: diff --git a/openandroidinstaller/assets/configs/s3ve3g.yaml b/openandroidinstaller/assets/configs/s3ve3g.yaml index c7c1d67d..b9b7db6a 100644 --- a/openandroidinstaller/assets/configs/s3ve3g.yaml +++ b/openandroidinstaller/assets/configs/s3ve3g.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S III Neo - devicecode: s3ve3g + device_name: Samsung Galaxy S III Neo + device_code: s3ve3g + supported_device_codes: + - s3ve3g steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/starlte.yaml b/openandroidinstaller/assets/configs/starlte.yaml index 3b09a481..3d089885 100644 --- a/openandroidinstaller/assets/configs/starlte.yaml +++ b/openandroidinstaller/assets/configs/starlte.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S9 - devicecode: starlte + device_name: Samsung Galaxy S9 + device_code: starlte + supported_device_codes: + - starlte requirements: android: 10 steps: diff --git a/openandroidinstaller/assets/configs/sunfish.yaml b/openandroidinstaller/assets/configs/sunfish.yaml index b91a734d..eae4b3ea 100644 --- a/openandroidinstaller/assets/configs/sunfish.yaml +++ b/openandroidinstaller/assets/configs/sunfish.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Pixel 4a - devicecode: sunfish + device_name: Pixel 4a + device_code: sunfish + supported_device_codes: + - sunfish requirements: android: 12.1.0 steps: diff --git a/openandroidinstaller/assets/configs/taimen.yaml b/openandroidinstaller/assets/configs/taimen.yaml index 8bed3bbf..e860f22c 100644 --- a/openandroidinstaller/assets/configs/taimen.yaml +++ b/openandroidinstaller/assets/configs/taimen.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Google Pixel 2 XL - devicecode: taimen + device_name: Google Pixel 2 XL + device_code: taimen + supported_device_codes: + - taimen requirements: android: 11 steps: diff --git a/openandroidinstaller/assets/configs/walleye.yaml b/openandroidinstaller/assets/configs/walleye.yaml index 1daae392..695040f7 100644 --- a/openandroidinstaller/assets/configs/walleye.yaml +++ b/openandroidinstaller/assets/configs/walleye.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Google Pixel 2 - devicecode: walleye + device_name: Google Pixel 2 + device_code: walleye + supported_device_codes: + - walleye requirements: android: 11 steps: diff --git a/openandroidinstaller/assets/configs/z3.yaml b/openandroidinstaller/assets/configs/z3.yaml index e9f5c797..044cd23f 100644 --- a/openandroidinstaller/assets/configs/z3.yaml +++ b/openandroidinstaller/assets/configs/z3.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Sony Xperia Z3 - devicecode: z3 + device_name: Sony Xperia Z3 + device_code: z3 + supported_device_codes: + - z3 requirements: firmware: 23.5.A.1.291 steps: diff --git a/openandroidinstaller/assets/configs/zerofltexx.yaml b/openandroidinstaller/assets/configs/zerofltexx.yaml index ad084e4f..2aa7eccb 100644 --- a/openandroidinstaller/assets/configs/zerofltexx.yaml +++ b/openandroidinstaller/assets/configs/zerofltexx.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S6 - devicecode: zerofltexx + device_name: Samsung Galaxy S6 + device_code: zerofltexx + supported_device_codes: + - zerofltexx steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/assets/configs/zeroltexx.yaml b/openandroidinstaller/assets/configs/zeroltexx.yaml index 0830241c..b4a8957b 100644 --- a/openandroidinstaller/assets/configs/zeroltexx.yaml +++ b/openandroidinstaller/assets/configs/zeroltexx.yaml @@ -1,7 +1,9 @@ metadata: maintainer: Tobias Sterbak (tsterbak) - devicename: Samsung Galaxy S6 Edge - devicecode: zeroltexx + device_name: Samsung Galaxy S6 Edge + device_code: zeroltexx + supported_device_codes: + - zeroltexx steps: unlock_bootloader: flash_recovery: diff --git a/openandroidinstaller/installer_config.py b/openandroidinstaller/installer_config.py index 520616fc..38e053ac 100644 --- a/openandroidinstaller/installer_config.py +++ b/openandroidinstaller/installer_config.py @@ -14,7 +14,7 @@ # Author: Tobias Sterbak from pathlib import Path -from typing import List, Optional, Dict +from typing import List, Optional import schema import yaml @@ -49,7 +49,6 @@ def __init__( class InstallerConfig: - def __init__( self, unlock_bootloader: List[Step], @@ -102,8 +101,12 @@ def _find_config_file(device_code: str, config_path: Path) -> Optional[Path]: with open(path, "r", encoding="utf-8") as stream: try: raw_config = dict(yaml.safe_load(stream)) - if device_code in raw_config.get("metadata", dict()).get("supported_device_codes", []): - logger.info(f"Device code '{device_code}' is supported by config '{path}'.") + if device_code in raw_config.get("metadata", dict()).get( + "supported_device_codes", [] + ): + logger.info( + f"Device code '{device_code}' is supported by config '{path}'." + ) return path except: pass @@ -117,23 +120,22 @@ def _load_config(device_code: str, config_path: Path) -> Optional[InstallerConfi Try to load local file in the same directory as the executable first, then load from assets. """ custom_path = _find_config_file(device_code, config_path=Path.cwd()) - try: + if custom_path: config = InstallerConfig.from_file(custom_path) logger.info(f"Loaded custom device config from {custom_path}.") logger.info(f"Config metadata: {config.metadata}.") return config - except FileNotFoundError: + else: # if no localfile, then try to load a config file from assets path = _find_config_file(device_code, config_path) - # path = config_path.joinpath(Path(f"{mapped_device_code}.yaml")) - try: + if path: config = InstallerConfig.from_file(path) logger.info(f"Loaded device config from {path}.") if config: logger.info(f"Config metadata: {config.metadata}.") return config - except FileNotFoundError: + else: logger.info(f"No device config found for {path}.") return None diff --git a/openandroidinstaller/utils.py b/openandroidinstaller/utils.py index bc317041..ea34997f 100644 --- a/openandroidinstaller/utils.py +++ b/openandroidinstaller/utils.py @@ -39,9 +39,7 @@ def get_download_link(devicecode: str) -> Optional[str]: return None -def image_works_with_device( - supported_device_codes: List[str], image_path: str -) -> bool: +def image_works_with_device(supported_device_codes: List[str], image_path: str) -> bool: """Determine if an image works for the given device.""" with zipfile.ZipFile(image_path) as image_zip: with image_zip.open( diff --git a/openandroidinstaller/views/start_view.py b/openandroidinstaller/views/start_view.py index 57e4d3c5..0238a802 100644 --- a/openandroidinstaller/views/start_view.py +++ b/openandroidinstaller/views/start_view.py @@ -38,7 +38,6 @@ from app_state import AppState from widgets import get_title from tooling import search_device, check_ab_partition -from installer_config import InstallerConfig class StartView(BaseView): @@ -254,7 +253,9 @@ def search_devices(self, e): self.continue_button.disabled = False self.bootloader_switch.disabled = False # overwrite the text field with the real name from the config - self.device_name.value = f"{device_name} (code: {self.state.config.device_code})" + self.device_name.value = ( + f"{device_name} (code: {self.state.config.device_code})" + ) self.device_name.color = colors.GREEN else: # failed to load config diff --git a/tests/test_configs.py b/tests/test_configs.py index 2230e7d3..ccb6ec08 100644 --- a/tests/test_configs.py +++ b/tests/test_configs.py @@ -38,7 +38,7 @@ def test_load_config_valid(config_path): # assert some properties of the config assert config - assert config.metadata.get("devicecode") == "sargo" + assert config.metadata.get("device_code") == "sargo" def test_load_config_notfound(config_path):