Описание реализации

Консольных команд

Все ниже указанные функции это реализация терминальный команд

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{время}.zip

  • indir – Путь к папке с репозиториями

Пример запуска

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 – Количество репозиториев

Результат

Список всех репозиториев пользователя

class pars_git.TGitUser

Структура словаря для хранения профиль пользователя

all_repos: dict[str, pars_git.Tall_repos]

Все репозиторию пользователя

meta_user: dict[str, str]

Данные о пользователе

token: str

Токен пользователя

user_name: str

Имя профиля

class pars_git.Tall_repos

Структура словаря для хранения проекта

clone_url: str

Url для клонирования проекта

default_branch: str

Основная ветка проект

updated_at: str

Дата обновления проекта

visibility: str

Доступность проекта public/private