feat: 更新之后通知管理员提交记录

This commit is contained in:
Rock Chin
2023-01-05 21:00:17 +08:00
parent 3bebeb4d99
commit dcc5d40a04

View File

@@ -1,5 +1,7 @@
import datetime
import pkg.utils.context
def update_all():
"""使用dulwich更新源码"""
@@ -8,9 +10,22 @@ def update_all():
except ModuleNotFoundError:
raise Exception("dulwich模块未安装,请查看 https://github.com/RockChinQ/QChatGPT/issues/77")
try:
before_commit_id = get_current_commit_id()
from dulwich import porcelain
repo = porcelain.open_repo('.')
porcelain.pull(repo)
after_commit_id = get_current_commit_id()
change_log = ""
for entry in repo.get_walker():
if str(entry.commit.id)[2:-1] == before_commit_id:
break
tz = datetime.timezone(datetime.timedelta(hours=entry.commit.commit_timezone // 3600))
dt = datetime.datetime.fromtimestamp(entry.commit.commit_time, tz)
change_log += dt.strftime('%Y-%m-%d %H:%M:%S') + " [" + str(entry.commit.message, encoding="utf-8").strip()+"]\n"
pkg.utils.context.get_qqbot_manager().notify_admin("更新完成,更新内容如下:\n"+change_log)
except ModuleNotFoundError:
raise Exception("dulwich模块未安装,请查看 https://github.com/RockChinQ/QChatGPT/issues/77")
except dulwich.porcelain.DivergedBranches:
@@ -59,6 +74,24 @@ def get_commit_id_and_time_and_msg() -> str:
return str(entry.commit.id)[2:9] + " " + dt.strftime('%Y-%m-%d %H:%M:%S') + " [" + str(entry.commit.message, encoding="utf-8").strip()+"]"
def get_current_commit_id() -> str:
"""检查是否有新版本"""
try:
import dulwich
except ModuleNotFoundError:
raise Exception("dulwich模块未安装,请查看 https://github.com/RockChinQ/QChatGPT/issues/77")
from dulwich import porcelain
repo = porcelain.open_repo('.')
current_commit_id = ""
for entry in repo.get_walker():
current_commit_id = str(entry.commit.id)[2:-1]
break
return current_commit_id
def is_new_version_available() -> bool:
"""检查是否有新版本"""
try:
@@ -71,11 +104,8 @@ def is_new_version_available() -> bool:
repo = porcelain.open_repo('.')
fetch_res = porcelain.ls_remote(porcelain.get_remote_repo(repo, "origin")[1])
current_commit_id = ""
for entry in repo.get_walker():
current_commit_id = str(entry.commit.id)[2:9]
break
current_commit_id = get_current_commit_id()
latest_commit_id = str(fetch_res[b'HEAD'])[2:9]
latest_commit_id = str(fetch_res[b'HEAD'])[2:-1]
return current_commit_id != latest_commit_id