format black

This commit is contained in:
mcbloch 2022-10-07 13:31:51 +02:00
parent f5ac069f20
commit c84c843f30

View file

@ -7,62 +7,84 @@ import pathlib
import git import git
import gitlab import gitlab
TOKEN_NAME = os.environ['GITLAB_ACCESS_TOKEN_NAME'] TOKEN_NAME = os.environ["GITLAB_ACCESS_TOKEN_NAME"]
TOKEN = os.environ['GITLAB_ACCESS_TOKEN'] TOKEN = os.environ["GITLAB_ACCESS_TOKEN"]
REPO_FOLDER = 'drive' REPO_FOLDER = "drive"
def get_repo(): def get_repo():
if os.path.exists(REPO_FOLDER): if os.path.exists(REPO_FOLDER):
print('Repo already exists') print("Repo already exists")
repo = git.Repo(REPO_FOLDER) repo = git.Repo(REPO_FOLDER)
else: else:
print('Cloning repo') print("Cloning repo")
repo = git.Repo.clone_from(f'https://{TOKEN_NAME}:{TOKEN}@git.zeus.gent/bestuur/drive.git', REPO_FOLDER) repo = git.Repo.clone_from(
f"https://{TOKEN_NAME}:{TOKEN}@git.zeus.gent/bestuur/drive.git", REPO_FOLDER
)
with repo.config_writer() as cw: with repo.config_writer() as cw:
cw.set_value('user', 'email', 'codimd.zeus.gent@mcbloch.dev') cw.set_value("user", "email", "codimd.zeus.gent@mcbloch.dev")
cw.set_value('user', 'name', 'CodiMD sync bot') cw.set_value("user", "name", "CodiMD sync bot")
repo.remotes.origin.fetch() repo.remotes.origin.fetch()
return repo return repo
def clear_repo(repo): def clear_repo(repo):
repo.git.restore('--staged', '--', '*') repo.git.restore("--staged", "--", "*")
repo.git.restore('--', '*') repo.git.restore("--", "*")
def checkout_branch(repo, branch_name): def checkout_branch(repo, branch_name):
repo.git.switch('master') repo.git.switch("master")
if branch_name in repo.heads: if branch_name in repo.heads:
repo.git.switch(branch_name) repo.git.switch(branch_name)
else: else:
repo.git.switch('-c', branch_name) repo.git.switch("-c", branch_name)
if branch_name in repo.remotes.origin.refs: if branch_name in repo.remotes.origin.refs:
repo.heads[branch_name].set_tracking_branch(repo.remotes.origin.refs[branch_name]) repo.heads[branch_name].set_tracking_branch(
repo.remotes.origin.refs[branch_name]
)
repo.remotes.origin.pull() repo.remotes.origin.pull()
def sync_file(drive, repo, note, sync_to): def sync_file(drive, repo, note, sync_to):
branch_name = f'codimd-sync_{sync_to}' branch_name = f"codimd-sync_{sync_to}"
print(f'Starting sync of {note}') print(f"Starting sync of {note}")
clear_repo(repo) clear_repo(repo)
checkout_branch(repo, branch_name) checkout_branch(repo, branch_name)
with open(f'data/{note}') as r: with open(f"data/{note}") as r:
pathlib.Path(f'{REPO_FOLDER}/{sync_to[:sync_to.rfind("/")]}').mkdir(parents=True, exist_ok=True) pathlib.Path(f'{REPO_FOLDER}/{sync_to[:sync_to.rfind("/")]}').mkdir(
with open(f'{REPO_FOLDER}/{sync_to}', 'w') as w: parents=True, exist_ok=True
)
with open(f"{REPO_FOLDER}/{sync_to}", "w") as w:
w.write(r.read()) w.write(r.read())
if repo.index.diff() or repo.untracked_files: if repo.index.diff() or repo.untracked_files:
repo.git.add(sync_to) repo.git.add(sync_to)
repo.git.commit('-m', sync_to) repo.git.commit("-m", sync_to)
repo.git.push('-u', 'origin', branch_name) repo.git.push("-u", "origin", branch_name)
if not drive.mergerequests.list(source_branch=branch_name, state='opened'): if not drive.mergerequests.list(source_branch=branch_name, state="opened"):
if drive.mergerequests.list(source_branch=branch_name): if drive.mergerequests.list(source_branch=branch_name):
drive.mergerequests.create({"source_branch": branch_name, "target_branch": 'master', "title": f'[CodiMD sync] Update document {sync_to}'}) drive.mergerequests.create(
{
"source_branch": branch_name,
"target_branch": "master",
"title": f"[CodiMD sync] Update document {sync_to}",
}
)
else: else:
drive.mergerequests.create({"source_branch": branch_name, "target_branch": 'master', "title": f'[CodiMD sync] Add document {sync_to}'}) drive.mergerequests.create(
{
"source_branch": branch_name,
"target_branch": "master",
"title": f"[CodiMD sync] Add document {sync_to}",
}
)
if __name__ == '__main__':
if __name__ == "__main__":
repo = get_repo() repo = get_repo()
gl = gitlab.Gitlab('https://git.zeus.gent', private_token=TOKEN) gl = gitlab.Gitlab("https://git.zeus.gent", private_token=TOKEN)
drive = gl.projects.get(2) drive = gl.projects.get(2)
with open('files.json') as f: with open("files.json") as f:
files = json.load(f)["valid_files"] files = json.load(f)["valid_files"]
for path in files: for path in files:
sync_file(drive, repo, path, files[path]["sync-to"]) sync_file(drive, repo, path, files[path]["sync-to"])