mirror of
https://github.com/josegonzalez/python-github-backup.git
synced 2025-12-05 08:08:02 +01:00
Add option to include certain number of the latest releases.
This commit is contained in:
@@ -49,7 +49,8 @@ CLI Help output::
|
||||
[-P] [-F] [--prefer-ssh] [-v]
|
||||
[--keychain-name OSX_KEYCHAIN_ITEM_NAME]
|
||||
[--keychain-account OSX_KEYCHAIN_ITEM_ACCOUNT]
|
||||
[--releases] [--assets] [--exclude [REPOSITORY [REPOSITORY ...]]
|
||||
[--releases] [--assets] [--latest-releases INCLUDE_LATEST_RELEASES]
|
||||
[--exclude [REPOSITORY [REPOSITORY ...]]
|
||||
[--throttle-limit THROTTLE_LIMIT] [--throttle-pause THROTTLE_PAUSE]
|
||||
USER
|
||||
|
||||
@@ -126,6 +127,9 @@ CLI Help output::
|
||||
binaries
|
||||
--assets include assets alongside release information; only
|
||||
applies if including releases
|
||||
--latest-releases INCLUDE_LATEST_RELEASES
|
||||
include certain number of the latest releases; only
|
||||
applies if including releases
|
||||
--exclude [REPOSITORY [REPOSITORY ...]]
|
||||
names of repositories to exclude from backup.
|
||||
--throttle-limit THROTTLE_LIMIT
|
||||
|
||||
@@ -23,6 +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
|
||||
|
||||
try:
|
||||
from . import __version__
|
||||
@@ -382,6 +383,13 @@ def parse_args(args=None):
|
||||
dest="include_assets",
|
||||
help="include assets alongside release information; only applies if including releases",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--latest-releases",
|
||||
type=int,
|
||||
default=0,
|
||||
dest="include_latest_releases",
|
||||
help="include certain number of the latest releases; only applies if including releases",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--throttle-limit",
|
||||
dest="throttle_limit",
|
||||
@@ -1206,8 +1214,14 @@ 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.include_latest_releases and args.include_latest_releases < len(releases):
|
||||
releases = sorted(releases, key=itemgetter('tag_name'), reverse=True)
|
||||
releases = releases[:args.include_latest_releases]
|
||||
logger.info("Saving the latest {0} releases to disk".format(len(releases)))
|
||||
else:
|
||||
logger.info("Saving {0} releases to disk".format(len(releases)))
|
||||
|
||||
# for each release, store it
|
||||
logger.info("Saving {0} releases to disk".format(len(releases)))
|
||||
for release in releases:
|
||||
release_name = release["tag_name"]
|
||||
release_name_safe = release_name.replace("/", "__")
|
||||
|
||||
Reference in New Issue
Block a user