mirror of
https://github.com/josegonzalez/python-github-backup.git
synced 2025-12-06 08:28:03 +01:00
Add option to skip prerelease versions.
Replace release sorting by tag with release sorting by creation date.
This commit is contained in:
@@ -125,10 +125,11 @@ CLI Help output::
|
|||||||
keychain that holds the personal access or OAuth token
|
keychain that holds the personal access or OAuth token
|
||||||
--releases include release information, not including assets or
|
--releases include release information, not including assets or
|
||||||
binaries
|
binaries
|
||||||
--assets include assets alongside release information; only
|
|
||||||
applies if including releases
|
|
||||||
--latest-releases INCLUDE_LATEST_RELEASES
|
--latest-releases INCLUDE_LATEST_RELEASES
|
||||||
include certain number of the latest releases; only
|
include certain number of the latest releases;
|
||||||
|
only applies if including releases
|
||||||
|
--skip-prerelease skip prerelease and draft versions; only applies if including releases
|
||||||
|
--assets include assets alongside release information; only
|
||||||
applies if including releases
|
applies if including releases
|
||||||
--exclude [REPOSITORY [REPOSITORY ...]]
|
--exclude [REPOSITORY [REPOSITORY ...]]
|
||||||
names of repositories to exclude from backup.
|
names of repositories to exclude from backup.
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ from urllib.error import HTTPError, URLError
|
|||||||
from urllib.parse import quote as urlquote
|
from urllib.parse import quote as urlquote
|
||||||
from urllib.parse import urlencode, urlparse
|
from urllib.parse import urlencode, urlparse
|
||||||
from urllib.request import HTTPRedirectHandler, Request, build_opener, urlopen
|
from urllib.request import HTTPRedirectHandler, Request, build_opener, urlopen
|
||||||
from operator import itemgetter
|
from datetime import datetime
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from . import __version__
|
from . import __version__
|
||||||
@@ -377,12 +377,6 @@ def parse_args(args=None):
|
|||||||
dest="include_releases",
|
dest="include_releases",
|
||||||
help="include release information, not including assets or binaries",
|
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(
|
parser.add_argument(
|
||||||
"--latest-releases",
|
"--latest-releases",
|
||||||
type=int,
|
type=int,
|
||||||
@@ -390,6 +384,18 @@ def parse_args(args=None):
|
|||||||
dest="include_latest_releases",
|
dest="include_latest_releases",
|
||||||
help="include certain number of the latest releases; only applies if including 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(
|
parser.add_argument(
|
||||||
"--throttle-limit",
|
"--throttle-limit",
|
||||||
dest="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)
|
release_template = "{0}/{1}/releases".format(repos_template, repository_fullname)
|
||||||
releases = retrieve_data(args, release_template, query_args=query_args)
|
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):
|
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]
|
releases = releases[:args.include_latest_releases]
|
||||||
logger.info("Saving the latest {0} releases to disk".format(len(releases)))
|
logger.info("Saving the latest {0} releases to disk".format(len(releases)))
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user