Files
scripts/raycast/repos-clone-clcreative.py
T

63 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Clone Repos for clcreative
# @raycast.mode compact
# Optional parameters:
# @raycast.icon https://avatars.githubusercontent.com/u/97734037?s=200&v=4
# Documentation:
# @raycast.author ChristianLempa
# @raycast.authorURL https://raycast.com/ChristianLempa
from dotenv import load_dotenv
import os
from pathlib import Path
from github import Github
from git import Repo
load_dotenv()
g = Github(os.getenv("GITHUB_TOKEN"))
ignored_folders = [
'.git',
'.DS_Store',
'.obsidian',
]
if __name__ == "__main__":
# Clone Repositories for clcreative
# https://docs.github.com/en/rest/reference/repos#list-organization-repositories
# --
try:
repos = g.get_organization('clcreative').get_repos()
cloned_repos = []
if repos is not None:
for repo in repos:
# set repo path on local workstation
repo_path = f'{ Path.home() }/projects/{repo.owner.login}/{repo.name}'
# when repo is not existing
if not os.path.exists(repo_path):
# print(f" {repo['name']} - {repo['description']}")
Repo.clone_from(repo.ssh_url, repo_path)
cloned_repos.append(repo.name)
if len(cloned_repos) > 0:
print(f"cloned {len(cloned_repos)} repos.")
else:
print("all repos are already cloned.")
else:
print("error: no repos found in organization")
exit(1)
except Exception as e:
print(f"{e.data['message']}")
exit(1)