Skip to content

Instantly share code, notes, and snippets.

@gregoriobenatti
Last active December 21, 2020 23:25
Show Gist options
  • Save gregoriobenatti/bd0c978478f8c21849f0e740736a3a35 to your computer and use it in GitHub Desktop.
Save gregoriobenatti/bd0c978478f8c21849f0e740736a3a35 to your computer and use it in GitHub Desktop.
clone_repos.py --username=gregoriobeantti --repos=10
import argparse
import requests
import subprocess
import os
def get_repo_list():
URL = "https://api.github.com/users/{0}/repos?page=1&per_page={1}".format(args.username, args.repos)
r = requests.get(url = URL, params = args.params)
data = r.json()
return data
def clone_stuff(data):
# repo_prefix = '{0}_'.format(args.username)
repo_prefix = '{0}_'.format("gb")
for repo in data:
prefix_to_check = [ 'coursera', 'udemy', 'youtube' ]
if any(ext in repo['name'] for ext in prefix_to_check):
local_repo_name = repo['name']
else:
local_repo_name = repo_prefix + repo['name']
if os.path.isdir(local_repo_name):
print('Already cloned {0}, maybe run a git fetch?!'.format(local_repo_name.upper()))
else:
repo_url = 'https://github.com/{0}/{1}.git'.format(args.username, repo['name'])
clone_command = 'git clone {0} {1}'.format(repo_url, local_repo_name)
# subprocess.run(clone_command)
print(clone_command)
def main():
repos = get_repo_list()
clone_stuff(repos)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='GitHub Repos')
parser.add_argument('--username',
type=str,
default='gregoriobenatti',
help='github username')
parser.add_argument('--repos',
type=int,
default=100,
help='number max of repos to return, default=100')
parser.add_argument('--params',
type=int,
default={},
help='params for github GET request...')
args = parser.parse_args()
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment