Описание реализации
Консольных команд
Все ниже указанные функции это реализация терминальный команд
- logic.clones_(path_look: str, outdir: str)
Клонировать репозитории
- Параметры
path_look – Путь к файлу с настройками
outdir – Куда клонировать репозитории
- Пример запуска
python main.py clones -o /home/denis/prog/GIT/
- logic.cmd_(command: str, indir: str)
Выполнить команду в каждом репозитории
- Параметры
command – Команда
indir – Путь к папке с репозиториями
- Пример запуска Обновить все репозитории
python main.py cmd pull -i /home/denis/prog/GIT/
- logic.getlog_()
Получить пути к лог файлам
- logic.getrep_(user_name: str, outfile: str, token: str)
Получить данные с сервера
GitHub
, по умолчанию данные сохранятся в файл./look.json
- Параметры
user_name – Имя пользователя GitHub
outfile – Куда поместить файл с результатом
token – Токен пользователя GitHub пока не используется в логики программы
- Пример запуска
python main.py getrep denisxab -o /home/denis/prog/GIT/look.json
Примечание
Можно вручную добавлять репозитории в конфигурацию
look.json
. Вот структура для храняlook.json
pars_git.Tall_repos()
- Пример ручного добавления репозитория
"all_repos": { ..., "ИмяПроекта": { "visibility": "private", "clone_url": "https://USERNAME:TOKEN@github.com/denisxab/ИмяПроекта.git", "default_branch": "master" } ..., }
- logic.zip_(outpathzip: Optional[str], indir: str)
Архивировать репозитории
- Параметры
outpathzip – Куда сохранить архив. По умолчанию там же где
indir
в папке zip/git_zip{время}.zipindir – Путь к папке с репозиториями
- Пример запуска
python main.py zip -i /home/denis/prog/GIT/
Парсинг профиля
- class pars_git.ApiGutHub(value)
Список URL API GitHub
- Пример использования
ApiGutHub.all_rep.value.substitute(user_name='denisxab') # https://api.github.com/users/denisxab/repos
- all_rep: string.Template = <string.Template object>
Получить список репозиториев у пользователя
- info_user: string.Template = <string.Template object>
Получить информацию о пользователи
- class pars_git.ParseGit(user_name: str, token: Optional[str] = None)
Класс для парсинга профиля
- LEN_MAX_PROJ_ONE_PAGE: Final[int] = 90
Сколько можно получить репозиториев за одно обращение к серверу
- classmethod getInfo(user_name: str, token: Optional[str]) dict[str, Union[str, int]]
Получить информацию о пользователе
- Параметры
token – Токен пользователя
user_name – Имя пользователя
- async classmethod getRepository(user_name: str, count_public_repos: int, token: Optional[str]) dict[str, dict[Union[str, int]]]
Получить список всех репозиториев
- Параметры
token – Токен пользователя
user_name – Имя пользователя
count_public_repos – Количество репозиториев
- Результат
Список всех репозиториев пользователя