代码拉取完成,页面将自动刷新
import urllib.request
import zipfile
import io
import os
import shutil
import tempfile
import subprocess
def get_remote_version(url):
try:
with urllib.request.urlopen(url) as response:
return response.read().decode('utf-8').strip()
except urllib.error.HTTPError as http_err:
print(f"[Workspace Manager] HTTP error occurred: {http_err}")
return None
def is_update_needed(local_version_file, remote_version_url):
if not os.path.exists(local_version_file):
return True # Local version file doesn't exist, needs update
with open(local_version_file, 'r') as file:
local_version = file.read().strip()
remote_version = get_remote_version(remote_version_url)
# print(f"[Workspace Manager] Current version: {local_version}, latest version: {remote_version}")
if remote_version and local_version != remote_version:
return True # Versions are different
else:
return False # No update needed
def download_and_extract_repo(url, extract_to):
print(f"[Workspace Manager] Downloading from {url} to {extract_to}")
try:
# Create a temporary directory to extract the zip file
with tempfile.TemporaryDirectory() as tmp_dir:
with urllib.request.urlopen(url) as response:
with zipfile.ZipFile(io.BytesIO(response.read())) as zip_ref:
# Extract to the temporary directory
zip_ref.extractall(tmp_dir)
# Assuming the first directory in the zip is the one we want
extracted_folder = os.path.join(tmp_dir, os.listdir(tmp_dir)[0])
# Move contents to the desired location
for filename in os.listdir(extracted_folder):
shutil.move(os.path.join(extracted_folder, filename), os.path.join(extract_to, filename))
except Exception as e:
print(f"[Workspace Manager] Error occurred during download and extraction: {e}")
def fetch_and_merge_main():
try:
# Fetch the latest changes from the remote
subprocess.run(["git", "fetch"], check=True)
# Checkout the local main branch
subprocess.run(["git", "checkout", "main"], check=True)
# Merge the remote main branch into the local main branch
subprocess.run(["git", "merge", "origin/main"], check=True)
print("[Workspace Manager] main branch updated successfully.")
except subprocess.CalledProcessError as e:
print(f"[Workspace Manager] An error occurred: {e}")
#main function
def update_version_if_outdated():
# URLs and file paths
repo_url = 'https://github.com/11cafe/comfyui-workspace-manager/archive/refs/heads/main.zip'
version_file_local =os.path.join(os.path.dirname(__file__),'version.txt')
version_file_remote = 'https://raw.githubusercontent.com/11cafe/comfyui-workspace-manager/main/version.txt'
# Check if update is needed
if is_update_needed(version_file_local, version_file_remote):
print("[Workspace Manager] Update is needed. Downloading latest version...")
fetch_and_merge_main()
return True
# download_and_extract_repo(repo_url, os.path.dirname(__file__))
return False
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。