Skip to content

Commit

Permalink
Merge pull request #88 from Jayy001/toltec_compat
Browse files Browse the repository at this point in the history
Dynamically determine toltec version
  • Loading branch information
Eeems committed Jun 16, 2024
2 parents 45c90bf + 624f7a0 commit 5c9ce95
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 10 deletions.
2 changes: 1 addition & 1 deletion codexctl/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def version_lookup(version, device):
return updateman.get_latest_version(device=device)

if version == "toltec":
return updateman.latest_toltec_version
return updateman.get_toltec_version(device=device)

if device == 2:
version_dict = updateman.id_lookups_rm2
Expand Down
23 changes: 18 additions & 5 deletions codexctl/updates.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ def __init__(self, device_version=None, logger=None):
self.id_lookups_rm1 = versions["remarkable1"]
self.id_lookups_rm2 = versions["remarkable2"]

self.latest_toltec_version = versions["toltec"]

def update_version_ids(self, location):
with open(location, "w", newline="\n") as f:
try:
Expand Down Expand Up @@ -89,6 +87,21 @@ def get_version_ids(self):
self.logger.debug(f"Contents are {contents}")
return contents

def get_toltec_version(self, device=2):
response = requests.get("https://toltec-dev.org/stable/Compatibility")
if response.status_code != 200:
raise SystemExit(
f"Error: Failed to get toltec compatibility table: {response.status_code} {response.reason}"
)

return self.__max_version(
[
x.split("=")[1]
for x in response.text.splitlines()
if x.startswith(f"rm{device}=")
]
)

def get_version(self, device=2, version=None, download_folder=None):
if download_folder is None:
download_folder = self.DOWNLOAD_FOLDER
Expand Down Expand Up @@ -133,13 +146,13 @@ def get_version(self, device=2, version=None, download_folder=None):

@staticmethod
def __max_version(versions):
return sorted(versions.keys(), key=lambda v: tuple(map(int, v.split("."))))[-1]
return sorted(versions, key=lambda v: tuple(map(int, v.split("."))))[-1]

def get_latest_version(self, device): # Hardcoded for now
if device == 2:
return self.__max_version(self.id_lookups_rm2)
return self.__max_version(self.id_lookups_rm2.keys())

return self.__max_version(self.id_lookups_rm1)
return self.__max_version(self.id_lookups_rm1.keys())

def _generate_xml_data(self): # TODO: Support for remarkable1
params = {
Expand Down
3 changes: 1 addition & 2 deletions data/version-ids.json
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,5 @@
"abde0fac3d12f7599a167414e2871fd340fe10312bc5cb1b65af958b4f5f0736"
]
},
"last-updated": 1718496385,
"toltec": "3.3.2.1666"
"last-updated": 1718496385
}
24 changes: 22 additions & 2 deletions test.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,18 @@ def assert_value(msg, value, expected):
print(f" {value} != {expected}")


def assert_gt(msg, value, expected):
global FAILED
print(f"Testing {msg}: ", end="")
if value >= expected:
print("pass")
return

FAILED = True
print("fail")
print(f" {value} != {expected}")


def test_set_server_config(original, expected):
global FAILED
print("Testing set_server_config: ", end="")
Expand Down Expand Up @@ -164,8 +176,16 @@ def test_cat(path, expected):
codexctl.updateman = codexctl.UpdateManager(logger=codexctl.logger)
assert_value("latest rm1 version", codexctl.version_lookup("latest", 1), "3.11.2.5")
assert_value("latest rm2 version", codexctl.version_lookup("latest", 2), "3.11.2.5")
assert_value("toltec rm1 version", codexctl.version_lookup("toltec", 1), "3.3.2.1666")
assert_value("toltec rm2 version", codexctl.version_lookup("toltec", 2), "3.3.2.1666")
assert_gt(
"toltec rm1 version",
tuple(map(int, codexctl.version_lookup("toltec", 1).split("."))),
(3, 3, 2),
)
assert_gt(
"toltec rm2 version",
tuple(map(int, codexctl.version_lookup("toltec", 2).split("."))),
(3, 3, 2),
)

if FAILED:
sys.exit(1)

0 comments on commit 5c9ce95

Please sign in to comment.