Skip to content

Commit eb88def

Browse files
committed
Add option to include certain number of the latest releases.
1 parent a97f15b commit eb88def

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

README.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ CLI Help output::
4949
[-P] [-F] [--prefer-ssh] [-v]
5050
[--keychain-name OSX_KEYCHAIN_ITEM_NAME]
5151
[--keychain-account OSX_KEYCHAIN_ITEM_ACCOUNT]
52-
[--releases] [--assets] [--exclude [REPOSITORY [REPOSITORY ...]]
52+
[--releases] [--assets] [--latest-releases INCLUDE_LATEST_RELEASES]
53+
[--exclude [REPOSITORY [REPOSITORY ...]]
5354
[--throttle-limit THROTTLE_LIMIT] [--throttle-pause THROTTLE_PAUSE]
5455
USER
5556

@@ -126,6 +127,9 @@ CLI Help output::
126127
binaries
127128
--assets include assets alongside release information; only
128129
applies if including releases
130+
--latest-releases INCLUDE_LATEST_RELEASES
131+
include certain number of the latest releases; only
132+
applies if including releases
129133
--exclude [REPOSITORY [REPOSITORY ...]]
130134
names of repositories to exclude from backup.
131135
--throttle-limit THROTTLE_LIMIT

github_backup/github_backup.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from urllib.parse import quote as urlquote
2424
from urllib.parse import urlencode, urlparse
2525
from urllib.request import HTTPRedirectHandler, Request, build_opener, urlopen
26+
from operator import itemgetter
2627

2728
try:
2829
from . import __version__
@@ -382,6 +383,13 @@ def parse_args(args=None):
382383
dest="include_assets",
383384
help="include assets alongside release information; only applies if including releases",
384385
)
386+
parser.add_argument(
387+
"--latest-releases",
388+
type=int,
389+
default=0,
390+
dest="include_latest_releases",
391+
help="include certain number of the latest releases; only applies if including releases",
392+
)
385393
parser.add_argument(
386394
"--throttle-limit",
387395
dest="throttle_limit",
@@ -1206,8 +1214,14 @@ def backup_releases(args, repo_cwd, repository, repos_template, include_assets=F
12061214
release_template = "{0}/{1}/releases".format(repos_template, repository_fullname)
12071215
releases = retrieve_data(args, release_template, query_args=query_args)
12081216

1217+
if args.include_latest_releases and args.include_latest_releases < len(releases):
1218+
releases = sorted(releases, key=itemgetter('tag_name'), reverse=True)
1219+
releases = releases[:args.include_latest_releases]
1220+
logger.info("Saving the latest {0} releases to disk".format(len(releases)))
1221+
else:
1222+
logger.info("Saving {0} releases to disk".format(len(releases)))
1223+
12091224
# for each release, store it
1210-
logger.info("Saving {0} releases to disk".format(len(releases)))
12111225
for release in releases:
12121226
release_name = release["tag_name"]
12131227
release_name_safe = release_name.replace("/", "__")

0 commit comments

Comments
 (0)