mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 18:15:28 +03:00
76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
import os
|
|
import shutil
|
|
import time
|
|
from zipfile import ZipFile
|
|
import requests
|
|
from ..local_data_func.get_script_release_tag import get_script_tag
|
|
from tqdm import tqdm
|
|
|
|
|
|
class UpdateScript:
|
|
|
|
GITHUB_REPO = "https://api.github.com/repos/koloideal/WordMath"
|
|
|
|
@staticmethod
|
|
def get_latest_release() -> dict:
|
|
response = requests.get(f"{UpdateScript.GITHUB_REPO}/releases/latest")
|
|
data = response.json()
|
|
return {'tag': data['tag_name'],
|
|
'url': data['zipball_url']}
|
|
|
|
|
|
@staticmethod
|
|
def download_new_release(zip_url):
|
|
response = requests.get(zip_url, stream=True)
|
|
response.raise_for_status()
|
|
|
|
total_size = int(response.headers.get("content-length", 0))
|
|
block_size = 1024
|
|
|
|
with tqdm(total=total_size, unit="B", unit_scale=True) as progress_bar:
|
|
with open('new_release.zip', "wb") as file:
|
|
for data in response.iter_content(block_size):
|
|
progress_bar.update(len(data))
|
|
file.write(data)
|
|
time.sleep(0.3)
|
|
|
|
with ZipFile('new_release.zip') as zip_file:
|
|
zip_file.extractall("new_release")
|
|
|
|
|
|
@staticmethod
|
|
def upgrade_script():
|
|
excluded_files = ['venv', '.venv', '.git', 'new_release']
|
|
for obj in os.listdir():
|
|
if obj not in excluded_files:
|
|
if os.path.isfile(obj):
|
|
os.remove(obj)
|
|
elif os.path.isdir(obj):
|
|
shutil.rmtree(obj)
|
|
|
|
new_release = os.listdir('new_release')
|
|
new_release_name = new_release[0] if new_release[0].startswith('koloideal-WordMath') else None
|
|
path = f'new_release/{new_release_name}'
|
|
all_files = os.listdir(path)
|
|
for file in all_files:
|
|
shutil.move(path + '/' + file, './' + file)
|
|
|
|
shutil.rmtree('new_release')
|
|
|
|
|
|
@staticmethod
|
|
def start_update() -> bool:
|
|
existing_release_tag: str = get_script_tag()
|
|
latest_release: dict = UpdateScript.get_latest_release()
|
|
latest_release_tag = latest_release['tag']
|
|
latest_release_url = latest_release['url']
|
|
|
|
if latest_release_tag != existing_release_tag:
|
|
#UpdateScript.download_new_release(latest_release_url)
|
|
#UpdateScript.upgrade_script()
|
|
return latest_release_tag
|
|
else:
|
|
return False
|
|
|
|
|