Add option to skip prerelease versions.

Replace release sorting by tag with release sorting by creation date.
This commit is contained in:
BrOleg5
2024-01-05 20:26:08 +08:00
parent eb88def888
commit ab18e96ea8
2 changed files with 22 additions and 11 deletions

View File

@@ -23,7 +23,7 @@ from urllib.error import HTTPError, URLError
from urllib.parse import quote as urlquote
from urllib.parse import urlencode, urlparse
from urllib.request import HTTPRedirectHandler, Request, build_opener, urlopen
from operator import itemgetter
from datetime import datetime
try:
from . import __version__
@@ -377,12 +377,6 @@ def parse_args(args=None):
dest="include_releases",
help="include release information, not including assets or binaries",
)
parser.add_argument(
"--assets",
action="store_true",
dest="include_assets",
help="include assets alongside release information; only applies if including releases",
)
parser.add_argument(
"--latest-releases",
type=int,
@@ -390,6 +384,18 @@ def parse_args(args=None):
dest="include_latest_releases",
help="include certain number of the latest releases; only applies if including releases",
)
parser.add_argument(
"--skip-prerelease",
action="store_true",
dest="skip_prerelease",
help="skip prerelease and draft versions; only applies if including releases",
)
parser.add_argument(
"--assets",
action="store_true",
dest="include_assets",
help="include assets alongside release information; only applies if including releases",
)
parser.add_argument(
"--throttle-limit",
dest="throttle_limit",
@@ -1214,8 +1220,12 @@ def backup_releases(args, repo_cwd, repository, repos_template, include_assets=F
release_template = "{0}/{1}/releases".format(repos_template, repository_fullname)
releases = retrieve_data(args, release_template, query_args=query_args)
if args.skip_prerelease:
releases = [r for r in releases if r["prerelease"] == False and r["draft"] == False]
if args.include_latest_releases and args.include_latest_releases < len(releases):
releases = sorted(releases, key=itemgetter('tag_name'), reverse=True)
releases.sort(key=lambda item: datetime.strptime(item["created_at"], "%Y-%m-%dT%H:%M:%SZ"), \
reverse=True)
releases = releases[:args.include_latest_releases]
logger.info("Saving the latest {0} releases to disk".format(len(releases)))
else: