FashGate's picture
Upload 204 files
8a469fd
import os
import re
import requests
import subprocess
import hashlib
def get_git_commit_version():
extension_dir = os.path.dirname(os.path.abspath(__file__)) + '/../../'
extension_dir = os.path.normpath(extension_dir)
git_path = os.path.join(extension_dir, '.git')
if os.path.exists(git_path):
try:
git = os.environ.get('GIT', "git")
if not git:
git = "git"
cmd = [git, 'rev-parse', 'HEAD']
commit_version = subprocess.check_output(cmd, cwd=extension_dir).decode('utf-8').strip()
if re.match(r'^[0-9a-f]{40}$', commit_version):
return commit_version
except Exception as e:
pass
try:
ref_path = os.path.join(git_path, 'refs', 'heads', 'main')
with open(ref_path, 'r') as f:
commit_version = f.read().strip()
if re.match(r'^[0-9a-f]{40}$', commit_version):
return commit_version
except Exception as e:
pass
return ''
def _handle_versions(response, filter_update_readme=False):
try:
if response.status_code != 200:
return []
result = response.json()
if not result:
return []
versions = []
for item in result:
message = item['commit']['message']
is_update_readme = False
if message.lower().strip() == 'update readme.md':
if filter_update_readme:
continue
is_update_readme = True
versions.append({
'version': item['sha'],
'message': message,
'date': item['commit']['committer']['date'],
'is_update_readme': is_update_readme
})
return versions
except Exception as e:
return []
def get_git_remote_versions(page=1, per_page=100, filter_update_readme=False):
api_urls = [
'https://api.github.com/repos/physton/sd-webui-prompt-all-in-one/commits',
'https://gitee.com/api/v5/repos/physton/sd-webui-prompt-all-in-one/commits'
]
for api_url in api_urls:
try:
api_url += f'?page={page}&per_page={per_page}'
key = hashlib.md5(api_url.encode('utf-8')).hexdigest()
response = requests.get(api_url)
versions = _handle_versions(response, filter_update_readme)
return versions
except Exception as e:
pass
return []
def get_latest_version():
current_version = get_git_commit_version()
# if not current_version:
# return current_version
versions = get_git_remote_versions(1, 10, False)
if len(versions) < 1:
return current_version
return versions[0]['version']