|
23 | 23 | from urllib.parse import quote as urlquote |
24 | 24 | from urllib.parse import urlencode, urlparse |
25 | 25 | from urllib.request import HTTPRedirectHandler, Request, build_opener, urlopen |
26 | | -from operator import itemgetter |
| 26 | +from datetime import datetime |
27 | 27 |
|
28 | 28 | try: |
29 | 29 | from . import __version__ |
@@ -377,19 +377,25 @@ def parse_args(args=None): |
377 | 377 | dest="include_releases", |
378 | 378 | help="include release information, not including assets or binaries", |
379 | 379 | ) |
380 | | - parser.add_argument( |
381 | | - "--assets", |
382 | | - action="store_true", |
383 | | - dest="include_assets", |
384 | | - help="include assets alongside release information; only applies if including releases", |
385 | | - ) |
386 | 380 | parser.add_argument( |
387 | 381 | "--latest-releases", |
388 | 382 | type=int, |
389 | 383 | default=0, |
390 | 384 | dest="include_latest_releases", |
391 | 385 | help="include certain number of the latest releases; only applies if including releases", |
392 | 386 | ) |
| 387 | + parser.add_argument( |
| 388 | + "--skip-prerelease", |
| 389 | + action="store_true", |
| 390 | + dest="skip_prerelease", |
| 391 | + help="skip prerelease and draft versions; only applies if including releases", |
| 392 | + ) |
| 393 | + parser.add_argument( |
| 394 | + "--assets", |
| 395 | + action="store_true", |
| 396 | + dest="include_assets", |
| 397 | + help="include assets alongside release information; only applies if including releases", |
| 398 | + ) |
393 | 399 | parser.add_argument( |
394 | 400 | "--throttle-limit", |
395 | 401 | dest="throttle_limit", |
@@ -1214,8 +1220,12 @@ def backup_releases(args, repo_cwd, repository, repos_template, include_assets=F |
1214 | 1220 | release_template = "{0}/{1}/releases".format(repos_template, repository_fullname) |
1215 | 1221 | releases = retrieve_data(args, release_template, query_args=query_args) |
1216 | 1222 |
|
| 1223 | + if args.skip_prerelease: |
| 1224 | + releases = [r for r in releases if r["prerelease"] == False and r["draft"] == False] |
| 1225 | + |
1217 | 1226 | if args.include_latest_releases and args.include_latest_releases < len(releases): |
1218 | | - releases = sorted(releases, key=itemgetter('tag_name'), reverse=True) |
| 1227 | + releases.sort(key=lambda item: datetime.strptime(item["created_at"], "%Y-%m-%dT%H:%M:%SZ"), \ |
| 1228 | + reverse=True) |
1219 | 1229 | releases = releases[:args.include_latest_releases] |
1220 | 1230 | logger.info("Saving the latest {0} releases to disk".format(len(releases))) |
1221 | 1231 | else: |
|
0 commit comments