Archived
删除历史版本, 初始化仓库
This commit is contained in:
37 files changed
+1773
No files matched your search
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env python3
|
||||
# -- coding:utf-8 --
|
||||
# @Author: markushammered@gmail.com
|
||||
# @Development Tool: Pycharm
|
||||
# @Create Time: 2022/4/29
|
||||
# @File Name: update.py
|
||||
|
||||
|
||||
import os
|
||||
import base64
|
||||
import logging
|
||||
import requests
|
||||
from ..config import VersionConfig
|
||||
from typing import Dict, List
|
||||
|
||||
|
||||
class SelfUpdateVersion:
|
||||
"""更新本体 -> 更新单个文件"""
|
||||
|
||||
def __init__(self, logger: logging.Logger):
|
||||
self.api = 'https://api.github.com/repos/MarkusJoe/RequestCounter/tags'
|
||||
self.headers = {'Authorization': 'token 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'}
|
||||
self.resp = requests.get(self.api, headers=self.headers).json()
|
||||
self.logger = logger
|
||||
|
||||
def commit_details(self):
|
||||
"""
|
||||
获取提交细节
|
||||
:return:
|
||||
"""
|
||||
commit_url = self.resp[0]['commit']['url']
|
||||
res = requests.get(commit_url, headers=self.headers).json()
|
||||
files = res['files']
|
||||
modified = []
|
||||
deleted = []
|
||||
|
||||
for f in files:
|
||||
file_path = f['filename']
|
||||
base64_content = requests.get(f['contents_url'], headers=self.headers).json()['content'] # 直接获取修改文件的base64
|
||||
if f['status'] in ['modified', 'added']:
|
||||
modified.append({'filename': f'./{file_path}', 'content': base64.b64decode(base64_content)})
|
||||
else:
|
||||
deleted.append(f'./{file_path}')
|
||||
|
||||
self.apply_change(modified, deleted)
|
||||
|
||||
def apply_change(self, modified: List[Dict], deleted: List):
|
||||
"""
|
||||
应用已经更改的文件
|
||||
:param modified:
|
||||
:param deleted:
|
||||
:return:
|
||||
"""
|
||||
for d in deleted:
|
||||
os.remove(d)
|
||||
self.logger.info(f'删除了: {d}')
|
||||
|
||||
for m in modified:
|
||||
with open(m['filename'], 'wb') as modify:
|
||||
modify.write(m['content'])
|
||||
self.logger.info(f'修改了: {m["filename"]}')
|
||||
|
||||
with open('./app/config.py', 'wb') as update_config:
|
||||
content = requests.get('https://api.github.com/repos/MarkusJoe/RequestCounter/contents/app/config.py',
|
||||
headers=self.headers).json()['content']
|
||||
update_config.write(base64.b64decode(content))
|
||||
|
||||
exit()
|
||||
|
||||
def check(self):
|
||||
current = VersionConfig.version[0]
|
||||
newest = self.resp[0]['name']
|
||||
if current != newest:
|
||||
self.logger.warning(f'当前版本已经落后于最新版本. 当前: {current} -> 远程: {newest}')
|
||||
self.commit_details()
|
||||
return False
|
||||
else:
|
||||
self.logger.info('当前版本为最新版本')
|
||||
return True
|
||||
Reference in New Issue
Block a user