@@ -343,7 +343,7 @@ def get_github_repo_url(args, repository):
343343 repo_url = 'https://{0}@{1}/{2}/{3}.git' .format (
344344 auth ,
345345 get_github_host (args ),
346- args . user ,
346+ repository [ 'owner' ][ 'login' ] ,
347347 repository ['name' ])
348348 else :
349349 repo_url = repository ['clone_url' ]
@@ -499,15 +499,25 @@ def retrieve_repositories(args):
499499 args .user ,
500500 args .repository )
501501
502- return retrieve_data (args , template , single_request = single_request )
502+ repos = retrieve_data (args , template , single_request = single_request )
503+
504+ if args .include_starred or args .include_everything :
505+ starred_template = 'https://{0}/user/starred' .format (
506+ get_github_api_host (args ))
507+ starred_repos = retrieve_data (args , starred_template , single_request = False )
508+ for item in starred_repos :
509+ item .update ({'is_starred' : True })
510+ repos .extend (starred_repos )
511+
512+ return repos
503513
504514
505515def filter_repositories (args , unfiltered_repositories ):
506516 log_info ('Filtering repositories' )
507517
508518 repositories = []
509519 for r in unfiltered_repositories :
510- if r ['owner' ]['login' ] == args .user :
520+ if r ['owner' ]['login' ] == args .user or is_starred_repo ( args , r ) :
511521 repositories .append (r )
512522
513523 name_regex = None
@@ -547,6 +557,14 @@ def backup_repositories(args, output_directory, repositories):
547557 for repository in repositories :
548558 backup_cwd = os .path .join (output_directory , 'repositories' )
549559 repo_cwd = os .path .join (backup_cwd , repository ['name' ])
560+
561+ # put starred repos in -o/starred/${owner}/${repo} to prevent collision of
562+ # any repositories with the same name
563+ if is_starred_repo (args , repository ):
564+ backup_cwd = os .path .join (output_directory , 'starred' )
565+ repo_cwd = os .path .join (backup_cwd , repository ['owner' ]['login' ],
566+ repository ['name' ])
567+
550568 repo_dir = os .path .join (repo_cwd , 'repository' )
551569 repo_url = get_github_repo_url (args , repository )
552570
@@ -866,6 +884,10 @@ def json_dump(data, output_file):
866884 separators = (',' , ': ' ))
867885
868886
887+ def is_starred_repo (args , repo ):
888+ return (args .include_starred or args .include_everything ) and repo .get ('is_starred' )
889+
890+
869891def main ():
870892 args = parse_args ()
871893
0 commit comments