mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-24 11:07:14 +00:00
perf: 完善更新检查功能
This commit is contained in:
@@ -270,7 +270,7 @@ def main(first_time_init=False):
|
|||||||
import pkg.utils.updater
|
import pkg.utils.updater
|
||||||
try:
|
try:
|
||||||
if pkg.utils.updater.is_new_version_available():
|
if pkg.utils.updater.is_new_version_available():
|
||||||
pkg.utils.context.get_qqbot_manager().notify_admin("新版本可用,请发送 !update 进行自动更新")
|
pkg.utils.context.get_qqbot_manager().notify_admin("新版本可用,请发送 !update 进行自动更新\n更新日志:\n{}".format("\n".join(pkg.utils.updater.get_rls_notes())))
|
||||||
else:
|
else:
|
||||||
logging.info("当前已是最新版本")
|
logging.info("当前已是最新版本")
|
||||||
|
|
||||||
|
|||||||
+51
-14
@@ -33,19 +33,33 @@ def pull_latest(repo_path: str) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def update_all() -> bool:
|
def get_release_list() -> list:
|
||||||
"""检查更新并下载源码"""
|
"""获取发行列表"""
|
||||||
current_tag = "v0.1.0"
|
|
||||||
if os.path.exists("current_tag"):
|
|
||||||
with open("current_tag", "r") as f:
|
|
||||||
current_tag = f.read()
|
|
||||||
|
|
||||||
rls_list_resp = requests.get(
|
rls_list_resp = requests.get(
|
||||||
url="https://api.github.com/repos/RockChinQ/QChatGPT/releases"
|
url="https://api.github.com/repos/RockChinQ/QChatGPT/releases"
|
||||||
)
|
)
|
||||||
|
|
||||||
rls_list = rls_list_resp.json()
|
rls_list = rls_list_resp.json()
|
||||||
|
|
||||||
|
return rls_list
|
||||||
|
|
||||||
|
|
||||||
|
def get_current_tag() -> str:
|
||||||
|
"""获取当前tag"""
|
||||||
|
current_tag = "v0.1.0"
|
||||||
|
if os.path.exists("current_tag"):
|
||||||
|
with open("current_tag", "r") as f:
|
||||||
|
current_tag = f.read()
|
||||||
|
|
||||||
|
return current_tag
|
||||||
|
|
||||||
|
|
||||||
|
def update_all() -> bool:
|
||||||
|
"""检查更新并下载源码"""
|
||||||
|
current_tag = get_current_tag()
|
||||||
|
|
||||||
|
rls_list = get_release_list()
|
||||||
|
|
||||||
latest_rls = {}
|
latest_rls = {}
|
||||||
rls_notes = []
|
rls_notes = []
|
||||||
for rls in rls_list:
|
for rls in rls_list:
|
||||||
@@ -189,18 +203,41 @@ def get_current_commit_id() -> str:
|
|||||||
|
|
||||||
def is_new_version_available() -> bool:
|
def is_new_version_available() -> bool:
|
||||||
"""检查是否有新版本"""
|
"""检查是否有新版本"""
|
||||||
check_dulwich_closure()
|
# 从github获取release列表
|
||||||
|
rls_list = get_release_list()
|
||||||
|
if rls_list is None:
|
||||||
|
return False
|
||||||
|
|
||||||
from dulwich import porcelain
|
# 获取当前版本
|
||||||
|
current_tag = get_current_tag()
|
||||||
|
|
||||||
repo = porcelain.open_repo('.')
|
# 检查是否有新版本
|
||||||
fetch_res = porcelain.ls_remote(porcelain.get_remote_repo(repo, "origin")[1])
|
for rls in rls_list:
|
||||||
|
if rls['tag_name'] == current_tag:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
current_commit_id = get_current_commit_id()
|
|
||||||
|
|
||||||
latest_commit_id = str(fetch_res[b'HEAD'])[2:-1]
|
def get_rls_notes() -> list:
|
||||||
|
"""获取更新日志"""
|
||||||
|
# 从github获取release列表
|
||||||
|
rls_list = get_release_list()
|
||||||
|
if rls_list is None:
|
||||||
|
return None
|
||||||
|
|
||||||
return current_commit_id != latest_commit_id
|
# 获取当前版本
|
||||||
|
current_tag = get_current_tag()
|
||||||
|
|
||||||
|
# 检查是否有新版本
|
||||||
|
rls_notes = []
|
||||||
|
for rls in rls_list:
|
||||||
|
if rls['tag_name'] == current_tag:
|
||||||
|
break
|
||||||
|
|
||||||
|
rls_notes.append(rls['name'])
|
||||||
|
|
||||||
|
return rls_notes
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user