LiteyukiBot/liteyuki/liteyuki_main/api.py
2024-04-12 01:07:53 +08:00

68 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import nonebot
from git import Repo
remote_urls = [
"https://github.com/snowykami/LiteyukiBot.git",
"https://gitee.com/snowykami/LiteyukiBot.git"
]
def detect_update() -> bool:
# 对每个远程仓库进行检查只要有一个仓库有更新就返回True
for remote_url in remote_urls:
repo = Repo(".")
repo.remotes.origin.set_url(remote_url)
repo.remotes.origin.fetch()
if repo.head.commit != repo.commit('origin/main'):
return True
def update_liteyuki() -> tuple[bool, str]:
"""更新轻雪
:return: 是否更新成功,更新变动"""
# origins = ["origin", "origin2"]
# repo = Repo(".")
#
# # Get the current HEAD commit
# current_head_commit = repo.head.commit
#
# # Fetch the latest information from the cloud
# repo.remotes.origin.fetch()
#
# # Get the latest HEAD commit
# new_head_commit = repo.commit('origin/main')
#
# # If the new HEAD commit is different from the current HEAD commit, there is a new commit
# diffs = current_head_commit.diff(new_head_commit)
# logs = ""
# for diff in diffs.iter_change_type('M'):
# logs += f"\n{diff.a_path}"
#
# for origin in origins:
# try:
# repo.remotes[origin].pull()
# break
# except Exception as e:
# nonebot.logger.error(f"Pull from {origin} failed: {e}")
# continue
# else:
# return False, 0
#
# return True, len(logs)
new_commit_detected = detect_update()
if new_commit_detected:
repo = Repo(".")
logs = ""
# 对每个远程仓库进行更新
for remote_url in remote_urls:
repo.remotes.origin.set_url(remote_url)
repo.remotes.origin.pull()
diffs = repo.head.commit.diff("origin/main")
for diff in diffs.iter_change_type('M'):
logs += f"\n{diff.a_path}"
return True, logs
else:
return False, "Nothing Changed"