57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
import requests
|
|
from git import Repo
|
|
import os
|
|
|
|
def read_config():
|
|
os.chdir("/external/repos")
|
|
current_dir = os.getcwd()
|
|
print("Current directory:", current_dir)
|
|
with open("./config.txt", "r") as file:
|
|
lines = file.readlines()
|
|
url = lines[0].strip()
|
|
token = lines[1].strip()
|
|
return url, token
|
|
|
|
def main():
|
|
# Read URL and token from config file
|
|
url, token = read_config()
|
|
|
|
# Perform request
|
|
headers = {"Authorization": f"Bearer {token}"}
|
|
# r = requests.get(url, headers=headers)
|
|
page = 1
|
|
|
|
while True:
|
|
# Perform request with pagination
|
|
headers = {"Authorization": f"Bearer {token}"}
|
|
params = {"page": page}
|
|
r = requests.get(url, headers=headers, params=params)
|
|
|
|
# Check if there are no more pages
|
|
if not r.json()["data"]:
|
|
break
|
|
|
|
# Loop through each repository returned, cloning it
|
|
# Loop through each repository returned
|
|
for repository in r.json()["data"]:
|
|
repo_path = "repos/" + repository["full_name"]
|
|
|
|
# Check if the repository is already cloned
|
|
if os.path.exists(repo_path):
|
|
# Update the existing clone
|
|
repo = Repo(repo_path)
|
|
repo.remotes.origin.pull()
|
|
else:
|
|
# Clone the repository
|
|
Repo.clone_from(repository["clone_url"], repo_path, depth=1)
|
|
|
|
# Increment page number
|
|
page += 1
|
|
# Check if there are no more pages or repositories
|
|
if not r.json()["data"]:
|
|
break
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|