format black
This commit is contained in:
parent
f5ac069f20
commit
c84c843f30
1 changed files with 49 additions and 27 deletions
76
src/sync.py
76
src/sync.py
|
@ -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"])
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue