Avoid installing pre-release versions unless explicitly asked
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
869b0b25b4
commit
d555284a01
@ -157,8 +157,8 @@ def read_version(from_tags: bool = False, fetch: bool = False) -> str | None:
|
|||||||
|
|
||||||
def fetch_release(
|
def fetch_release(
|
||||||
remote: GitRemoteInfo,
|
remote: GitRemoteInfo,
|
||||||
version: str | None = None
|
version: str | None = None,
|
||||||
# TODO: Accept an argument for pre-release
|
pre_release=False,
|
||||||
) -> dict[Any, Any]:
|
) -> dict[Any, Any]:
|
||||||
"""Fetches a release object from a Github repo
|
"""Fetches a release object from a Github repo
|
||||||
|
|
||||||
@ -174,14 +174,21 @@ def fetch_release(
|
|||||||
|
|
||||||
# Return the latest if requested
|
# Return the latest if requested
|
||||||
if version is None or version == "latest":
|
if version is None or version == "latest":
|
||||||
return result.json()[0]
|
for release in result.json():
|
||||||
|
if release["prerelease"] and not pre_release:
|
||||||
|
continue
|
||||||
|
|
||||||
|
return release
|
||||||
|
|
||||||
# Return matching version
|
# Return matching version
|
||||||
for release in result.json():
|
for release in result.json():
|
||||||
if release["tag_name"].endswith(version):
|
if release["tag_name"].endswith(version):
|
||||||
return release
|
return release
|
||||||
|
|
||||||
raise ValueError(f"Could not find release version ending in {version}")
|
raise ValueError(
|
||||||
|
f"Could not find release version ending in {version}."
|
||||||
|
f"{ ' Is it a pre-release?' if not pre_release else ''}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def match_asset(
|
def match_asset(
|
||||||
@ -447,6 +454,11 @@ def _parse_args(args: list[str] | None = None) -> argparse.Namespace:
|
|||||||
"--version",
|
"--version",
|
||||||
help="Release version to download. If not provied, it will look for project metadata",
|
help="Release version to download. If not provied, it will look for project metadata",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--prerelease",
|
||||||
|
action="store_true",
|
||||||
|
help="Include pre-release versions in search",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--version-git-tag",
|
"--version-git-tag",
|
||||||
"-t",
|
"-t",
|
||||||
@ -527,9 +539,14 @@ def download_release(
|
|||||||
system_mapping: dict[str, str] | None = None,
|
system_mapping: dict[str, str] | None = None,
|
||||||
arch_mapping: dict[str, str] | None = None,
|
arch_mapping: dict[str, str] | None = None,
|
||||||
extract_files: list[str] | None = None,
|
extract_files: list[str] | None = None,
|
||||||
|
pre_release=False,
|
||||||
) -> list[Path]:
|
) -> list[Path]:
|
||||||
"""Convenience method for fetching, downloading and extracting a release"""
|
"""Convenience method for fetching, downloading and extracting a release"""
|
||||||
release = fetch_release(remote_info, version=version)
|
release = fetch_release(
|
||||||
|
remote_info,
|
||||||
|
version=version,
|
||||||
|
pre_release=pre_release,
|
||||||
|
)
|
||||||
asset = match_asset(
|
asset = match_asset(
|
||||||
release,
|
release,
|
||||||
format,
|
format,
|
||||||
@ -550,7 +567,9 @@ def main():
|
|||||||
args = _parse_args()
|
args = _parse_args()
|
||||||
|
|
||||||
release = fetch_release(
|
release = fetch_release(
|
||||||
GitRemoteInfo(args.hostname, args.owner, args.repo), args.version
|
GitRemoteInfo(args.hostname, args.owner, args.repo),
|
||||||
|
version=args.version,
|
||||||
|
pre_release=args.prerelease,
|
||||||
)
|
)
|
||||||
asset = match_asset(
|
asset = match_asset(
|
||||||
release,
|
release,
|
||||||
|
Loading…
Reference in New Issue
Block a user