add projects from gitlab

This commit is contained in:
Dmitry Afanasyev 2022-04-06 13:33:53 +03:00
commit 68b8e4d9f9
6 changed files with 83 additions and 0 deletions

View File

@ -0,0 +1 @@
X5_SCM_TOKEN=-xczQ_2we3ms8BAzkMNZ

1
get_project_core/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.env

View File

@ -0,0 +1,4 @@
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

View File

@ -0,0 +1,28 @@
import importlib.util
import logging
import sys
from pathlib import Path
current_dir = Path(__file__).parent.parent
# use loguru if it is possible for color output
if importlib.util.find_spec('loguru') is not None:
from loguru import logger
logger.remove()
logger.add(sink=sys.stdout, colorize=True, level='DEBUG',
format="<cyan>{time:DD.MM.YYYY HH:mm:ss}</cyan> | <level>{level}</level> | "
"<magenta>{message}</magenta>")
# use standard logging
else:
logger = logging.getLogger()
logger.setLevel(logging.INFO)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
log_formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(message)s")
console_handler.setFormatter(log_formatter)
logger.addHandler(console_handler)

View File

@ -0,0 +1,3 @@
#!/usr/bin/bash
git pull --all

46
get_projects.py Normal file
View File

@ -0,0 +1,46 @@
import json # noqa # pylint: disable=unused-import
import subprocess
import sys
import time
import requests
from get_project_core.settings import current_dir, logger # ,config
MY_GITLAB_TOKEN=''
headers = {'PRIVATE-TOKEN': MY_GITLAB_TOKEN}
def create_repositories(group_id: int):
"""
Create submodules from gitlab group
:param group_id: Can be find under group name
"""
request = requests.get(f'https://scm.x5.ru/api/v4/groups/{group_id}/projects', headers=headers, verify=False)
# logger.info(f'{json.dumps(request.json(), indent=4, separators=(",", ":"))}')
repos = request.json()
for repo in repos:
name = str(repo.get("ssh_url_to_repo", None)).strip()
subprocess.Popen(['git', 'submodule', 'add', name])
logger.info(f'Created: {name}')
time.sleep(15)
def update_submodules():
"""
Update all submodules
"""
subprocess.Popen(['git', 'submodule', 'foreach', f'{current_dir}/get-project-core/update-repos.sh'])
if __name__ == '__main__':
args = sys.argv[1:]
try:
group = args[0]
logger.info(group)
except IndexError:
logger.error('Gitlab group id must be set')