Skip to content

Commit 0557a2a

Browse files
committed
IMPROVEMENT: Initial work on version ranges
1 parent 297ee25 commit 0557a2a

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

ardupilot_methodic_configurator/backend_internet.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,55 @@ def download_file_from_url(
9090
return False
9191

9292

93+
def get_release_interval_info(
94+
start_ver: str, end_ver: str, should_be_pre_release: bool, timeout: int = 30
95+
) -> dict[str, dict[str, Any]]:
96+
"""
97+
Get release information from GitHub API.
98+
99+
Get release version information from all the versions starting in start_ver (exclusive) to end_ver (inclusive).
100+
101+
Args:
102+
start_ver (str): The starting version (exclusive) for the search.
103+
end_ver (str): The ending version (inclusive) for the search.
104+
should_be_pre_release (bool): Whether the releases should be pre-releases.
105+
timeout (int): Request timeout in seconds
106+
107+
Returns:
108+
Release information dictionary
109+
110+
"""
111+
releases_info = {}
112+
113+
try:
114+
url = urljoin(GITHUB_API_URL_RELEASES, "tags")
115+
response = requests_get(url, timeout=timeout)
116+
response.raise_for_status()
117+
118+
releases = response.json()
119+
120+
for release in releases:
121+
tag_name = release.get("tag_name", "").lstrip("v") # Remove the 'v' prefix if it exists
122+
123+
# Check if the tag name is within the specified range
124+
if start_ver < tag_name <= end_ver:
125+
if should_be_pre_release != release.get("prerelease", False):
126+
continue # Skip if release doesn't match pre-release requirement
127+
128+
releases_info[tag_name] = {
129+
"id": release["id"],
130+
"name": release["name"],
131+
"published_at": release["published_at"],
132+
"prerelease": release["prerelease"],
133+
}
134+
135+
except requests_RequestException as e:
136+
logging_error(_("Failed to fetch releases: {}").format(e))
137+
raise
138+
139+
return releases_info
140+
141+
93142
def get_release_info(name: str, should_be_pre_release: bool, timeout: int = 30) -> dict[str, Any]:
94143
"""
95144
Get release information from GitHub API.

0 commit comments

Comments
 (0)