mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-12 08:46:02 +00:00
feat: 更新之后通知管理员提交记录
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
|
import pkg.utils.context
|
||||||
|
|
||||||
|
|
||||||
def update_all():
|
def update_all():
|
||||||
"""使用dulwich更新源码"""
|
"""使用dulwich更新源码"""
|
||||||
@@ -8,9 +10,22 @@ def update_all():
|
|||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
raise Exception("dulwich模块未安装,请查看 https://github.com/RockChinQ/QChatGPT/issues/77")
|
raise Exception("dulwich模块未安装,请查看 https://github.com/RockChinQ/QChatGPT/issues/77")
|
||||||
try:
|
try:
|
||||||
|
before_commit_id = get_current_commit_id()
|
||||||
from dulwich import porcelain
|
from dulwich import porcelain
|
||||||
repo = porcelain.open_repo('.')
|
repo = porcelain.open_repo('.')
|
||||||
porcelain.pull(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:
|
except ModuleNotFoundError:
|
||||||
raise Exception("dulwich模块未安装,请查看 https://github.com/RockChinQ/QChatGPT/issues/77")
|
raise Exception("dulwich模块未安装,请查看 https://github.com/RockChinQ/QChatGPT/issues/77")
|
||||||
except dulwich.porcelain.DivergedBranches:
|
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()+"]"
|
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:
|
def is_new_version_available() -> bool:
|
||||||
"""检查是否有新版本"""
|
"""检查是否有新版本"""
|
||||||
try:
|
try:
|
||||||
@@ -71,11 +104,8 @@ def is_new_version_available() -> bool:
|
|||||||
repo = porcelain.open_repo('.')
|
repo = porcelain.open_repo('.')
|
||||||
fetch_res = porcelain.ls_remote(porcelain.get_remote_repo(repo, "origin")[1])
|
fetch_res = porcelain.ls_remote(porcelain.get_remote_repo(repo, "origin")[1])
|
||||||
|
|
||||||
current_commit_id = ""
|
current_commit_id = get_current_commit_id()
|
||||||
for entry in repo.get_walker():
|
|
||||||
current_commit_id = str(entry.commit.id)[2:9]
|
|
||||||
break
|
|
||||||
|
|
||||||
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
|
return current_commit_id != latest_commit_id
|
||||||
|
|||||||
Reference in New Issue
Block a user