31 lines
824 B
Python
31 lines
824 B
Python
from pydantic import AnyHttpUrl
|
|
from pathlib import Path
|
|
from git import Repo
|
|
import logging
|
|
import shutil
|
|
import os
|
|
from runner_script import RunnerScript
|
|
|
|
|
|
def clone_repository(repo_url: AnyHttpUrl) -> Path:
|
|
# extract repo name
|
|
repo_name = repo_url.split('/')[-1].replace('.git', '')
|
|
repo_dir = os.getenv('REPO_DIR', default=None)
|
|
assert repo_dir is not None
|
|
dst_dir = Path(repo_dir) / repo_name
|
|
# prepare repo download dir
|
|
if dst_dir.exists():
|
|
shutil.rmtree(dst_dir)
|
|
dst_dir.mkdir()
|
|
# git clone repo
|
|
Repo.clone_from(url=repo_url, to_path=dst_dir)
|
|
logging.debug('finished')
|
|
return dst_dir
|
|
|
|
|
|
def execute_runner_script(path: Path) -> None:
|
|
script_list = RunnerScript.from_file(path)
|
|
for cmd in script_list:
|
|
os.system(cmd)
|
|
logging.debug('finished')
|