Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions nanolayer/cli/install.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ def install_gh_release_binary(
filter_assets_by_platform: bool = True,
filter_assets_by_misc: bool = True,
filter_assets_by_bitness: bool = True,
prerelease: bool = False,
) -> None:
if binary_names == "":
raise typer.BadParameter("binary names cannot be empty string")
Expand All @@ -167,4 +168,5 @@ def install_gh_release_binary(
filter_assets_by_platform=filter_assets_by_platform,
filter_assets_by_misc=filter_assets_by_misc,
filter_assets_by_bitness=filter_assets_by_bitness,
prerelease=prerelease,
)
4 changes: 3 additions & 1 deletion nanolayer/installers/gh_release/gh_release_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ def install(
filter_assets_by_platform: bool = True,
filter_assets_by_misc: bool = True,
filter_assets_by_bitness: bool = True,
prerelease: bool = False,
) -> None:
if lib_name is None or lib_name == "":
if len(binary_names) > 1:
Expand Down Expand Up @@ -137,7 +138,7 @@ def install(

# Will raise an exception if release for the requested version does not exists
release_version = ReleaseResolver.resolve(
asked_version=version, repo=repo, release_tag_regex=release_tag_regex
asked_version=version, repo=repo, release_tag_regex=release_tag_regex, prerelease=prerelease
)

try:
Expand All @@ -158,6 +159,7 @@ def install(
repo=repo,
release_tag_regex=release_tag_regex,
use_github_api=True,
prerelease=prerelease,
)
# will raise an exception if more or less than a single asset can meet the requirments
resolved_asset = AssetResolver.resolve(
Expand Down
7 changes: 4 additions & 3 deletions nanolayer/installers/gh_release/resolvers/release_resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,13 @@ def get_latest_git_version_tag(

@classmethod
def get_latest_release_tag(
cls, repo: str, release_tag_regex: Optional[str] = None
cls, repo: str, release_tag_regex: Optional[str] = None, prerelease: bool = False
) -> str:
response = urllib.request.urlopen(
f"https://api.github.com/repos/{repo}/releases"
) # nosec
release_dicts = json.loads(response.read())
release_tags = [release_dict["tag_name"] for release_dict in release_dicts]
release_tags = [release_dict["tag_name"] for release_dict in release_dicts if release_dict["prerelease"] == prerelease]
if release_tag_regex is not None:
release_tags = cls._filter_tags_by_regex(release_tags, release_tag_regex)
return natsorted(release_tags)[-1]
Expand All @@ -93,10 +93,11 @@ def resolve(
repo: str,
release_tag_regex: Optional[str] = None,
use_github_api: bool = False,
prerelease: bool = False,
) -> str:
if asked_version == "latest":
if use_github_api or not cls._git_exists():
return cls.get_latest_release_tag(repo, release_tag_regex)
return cls.get_latest_release_tag(repo, release_tag_regex, prerelease)
else:
return cls.get_latest_git_version_tag(repo, release_tag_regex)

Expand Down
9 changes: 9 additions & 0 deletions tests/installers/gh_release/test_gh_release_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,15 @@
"",
"linux/arm64",
),
( # prerelease
"pwsh --version",
0,
"mcr.microsoft.com/vscode/devcontainers/python:3.10-bullseye",
"PowerShell/PowerShell",
"pwsh",
"--asset-regex '^(?!.*(fxdependent))' --prerelease",
"linux/amd64",
),
],
)
def test_gh_release_install(
Expand Down