mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2024-11-30 10:14:45 +08:00
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
import nonebot
|
||
from git import Repo
|
||
|
||
from liteyuki.utils.base.config import get_config
|
||
|
||
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: 是否更新成功,更新变动"""
|
||
|
||
if get_config("allow_update", True):
|
||
new_commit_detected = detect_update()
|
||
if new_commit_detected:
|
||
repo = Repo(".")
|
||
logs = ""
|
||
# 对每个远程仓库进行更新
|
||
for remote_url in remote_urls:
|
||
try:
|
||
logs += f"\nremote: {remote_url}"
|
||
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
|
||
except:
|
||
continue
|
||
else:
|
||
return False, "Nothing Changed"
|
||
|
||
else:
|
||
raise PermissionError("Update is not allowed.")
|