From 176ffa52a6abf31cd314296539e135588d00b37a Mon Sep 17 00:00:00 2001 From: Tobias Sterbak Date: Thu, 9 Feb 2023 18:10:16 +0000 Subject: [PATCH] Allow to add a specific link to a twrp page for the download button to config --- README.md | 14 ++++++++++++++ .../assets/configs/cheeseburger.yaml | 1 + openandroidinstaller/assets/configs/dumpling.yaml | 1 + openandroidinstaller/installer_config.py | 2 ++ openandroidinstaller/views/select_view.py | 3 ++- 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0538dadc..50e00d32 100644 --- a/README.md +++ b/README.md @@ -179,6 +179,20 @@ If you want to use the tool for a non-supported smartphone, the fastest way is t #### Content of a config file +A config file consists of two parts. The first part are some metadata about the device and the second parts are the steps to unlock the bootloader, flash a recovery and install the ROMs. + +##### 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. +- `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. +- `android`: [OPTIONAL] int|str; Android version to install prior to installing a custom ROM. +- `firmware`: [OPTIONAL] str; specific firmware version to install before installing a custom ROM. + +##### How to write steps: Every step in the config file corresponds to one view in the application. These steps should contain the following fields: - `type`: str; Corresponds to the type of view to generate. There are the following options: - `text`: Just display the text given in content. diff --git a/openandroidinstaller/assets/configs/cheeseburger.yaml b/openandroidinstaller/assets/configs/cheeseburger.yaml index f162ed98..2c708d41 100644 --- a/openandroidinstaller/assets/configs/cheeseburger.yaml +++ b/openandroidinstaller/assets/configs/cheeseburger.yaml @@ -2,6 +2,7 @@ metadata: maintainer: SirRGB devicename: OnePlus 5 devicecode: cheeseburger + twrp-link: cheeseburger_dumpling steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/assets/configs/dumpling.yaml b/openandroidinstaller/assets/configs/dumpling.yaml index c52e87df..78626267 100644 --- a/openandroidinstaller/assets/configs/dumpling.yaml +++ b/openandroidinstaller/assets/configs/dumpling.yaml @@ -2,6 +2,7 @@ metadata: maintainer: SirRGB devicename: OnePlus 5T devicecode: dumpling + twrp-link: cheeseburger_dumpling steps: unlock_bootloader: - type: call_button diff --git a/openandroidinstaller/installer_config.py b/openandroidinstaller/installer_config.py index 38b876ba..4fb8580c 100644 --- a/openandroidinstaller/installer_config.py +++ b/openandroidinstaller/installer_config.py @@ -81,6 +81,7 @@ def __init__( self.metadata = metadata self.requirements = requirements self.device_code = metadata.get("devicecode") + self.twrp_link = metadata.get("twrp-link") inverted_mapping = dict(map(reversed, self.device_code_mapping.items())) self.alternative_device_code = inverted_mapping.get( self.device_code, self.device_code @@ -175,6 +176,7 @@ def validate_config(config: str) -> bool: "maintainer": str, "devicename": str, "devicecode": str, + schema.Optional("twrp-link"): str, }, schema.Optional("requirements"): { schema.Optional("android"): schema.Or(str, int), diff --git a/openandroidinstaller/views/select_view.py b/openandroidinstaller/views/select_view.py index e3c6c35d..705880b9 100644 --- a/openandroidinstaller/views/select_view.py +++ b/openandroidinstaller/views/select_view.py @@ -145,6 +145,7 @@ def build(self): self.info_field = Row() # if there is an available download, show the button to the page if self.download_link: + twrp_download_link = f"https://dl.twrp.me/{self.state.config.twrp_link if self.state.config.twrp_link else self.state.config.device_code}" self.right_view.controls.append(Divider()) self.right_view.controls.append( Column( @@ -166,7 +167,7 @@ def build(self): "Download TWRP recovery", icon=icons.DOWNLOAD_OUTLINED, on_click=lambda _: webbrowser.open( - f"https://dl.twrp.me/{self.state.config.device_code}" + twrp_download_link ), expand=True, ),