mirror of
https://github.com/ParisNeo/lollms-webui.git
synced 2024-12-18 20:17:50 +00:00
upgrade
This commit is contained in:
parent
0117f25412
commit
bf741b4297
@ -254,10 +254,10 @@ class LOLLMSWebUI(LOLLMSElfServer):
|
||||
def check_update_(self, branch_name="main"):
|
||||
try:
|
||||
# Open the repository
|
||||
repo_path = str(Path(__file__).parent)
|
||||
repo_path = str(Path(__file__).parent/"lollms_core")
|
||||
if self.check_module_update_(repo_path, branch_name):
|
||||
return True
|
||||
repo_path = str(Path(__file__).parent/"lollms_core")
|
||||
repo_path = str(Path(__file__).parent)
|
||||
if self.check_module_update_(repo_path, branch_name):
|
||||
return True
|
||||
return False
|
||||
|
124
update_script.py
124
update_script.py
@ -1,4 +1,3 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
import git
|
||||
@ -6,51 +5,91 @@ import subprocess
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from ascii_colors import ASCIIColors, trace_exception
|
||||
import tkinter as tk
|
||||
from tkinter import messagebox
|
||||
|
||||
def show_error_dialog(message):
|
||||
root = tk.Tk()
|
||||
root.withdraw() # Hide the main window
|
||||
messagebox.showerror("Error", message)
|
||||
root.destroy()
|
||||
|
||||
def run_git_pull():
|
||||
try:
|
||||
print("----------------> Updating the code <-----------------------")
|
||||
ASCIIColors.info("----------------> Updating the code <-----------------------")
|
||||
|
||||
repo = git.Repo(Path(__file__).parent)
|
||||
origin = repo.remotes.origin
|
||||
origin.pull()
|
||||
|
||||
# Fetch the latest changes
|
||||
origin.fetch()
|
||||
|
||||
# Check if there are any changes to pull
|
||||
if repo.head.commit == origin.refs.main.commit:
|
||||
ASCIIColors.success("Already up-to-date.")
|
||||
return True
|
||||
|
||||
# Discard local changes and force update
|
||||
try:
|
||||
repo.git.reset('--hard', 'origin/main')
|
||||
repo.git.clean('-fd')
|
||||
origin.pull()
|
||||
ASCIIColors.success("Successfully updated the code.")
|
||||
except git.GitCommandError as e:
|
||||
error_message = f"Failed to update the code: {str(e)}"
|
||||
ASCIIColors.error(error_message)
|
||||
show_error_dialog(error_message)
|
||||
return False
|
||||
|
||||
print("Updating submodules")
|
||||
try:
|
||||
repo.git.submodule('update', '--init')
|
||||
repo.git.submodule('update', '--init', '--recursive', '--force')
|
||||
# Checkout the main branch on each submodule
|
||||
for submodule in repo.submodules:
|
||||
try:
|
||||
submodule_repo = submodule.module()
|
||||
submodule_repo.git.checkout('main')
|
||||
print(f"Checking out main from {submodule}")
|
||||
submodule.repo.git.submodule('update', '--remote', submodule.name) # Force submodule update
|
||||
print(f"Forcing update on {submodule}")
|
||||
submodule_repo.git.checkout('main')
|
||||
|
||||
submodule_repo.git.fetch('origin')
|
||||
submodule_repo.git.reset('--hard', 'origin/main')
|
||||
submodule_repo.git.clean('-fd')
|
||||
print(f"Updated submodule: {submodule}.\nPlease report the error to ParisNeo either on Discord or on github.")
|
||||
except Exception as ex:
|
||||
print(f"Couldn't checkout module {submodule}")
|
||||
|
||||
print(f"Couldn't update submodule {submodule}: {str(ex)}")
|
||||
|
||||
execution_path = Path(os.getcwd())
|
||||
|
||||
# Clone the repository to the target path
|
||||
ASCIIColors.info("Lollms_core found in the app space.\nPulling last lollms_core")
|
||||
subprocess.run(["git", "-C", str(execution_path/"lollms_core"), "pull"])
|
||||
|
||||
# Update lollms_core
|
||||
ASCIIColors.info("Updating lollms_core")
|
||||
lollms_core_path = execution_path / "lollms_core"
|
||||
if lollms_core_path.exists():
|
||||
subprocess.run(["git", "-C", str(lollms_core_path), "fetch", "origin"], check=True)
|
||||
subprocess.run(["git", "-C", str(lollms_core_path), "reset", "--hard", "origin/main"], check=True)
|
||||
subprocess.run(["git", "-C", str(lollms_core_path), "clean", "-fd"], check=True)
|
||||
ASCIIColors.success("Successfully updated lollms_core")
|
||||
else:
|
||||
ASCIIColors.warning("lollms_core directory not found")
|
||||
|
||||
except Exception as ex:
|
||||
print("Couldn't update submodules")
|
||||
print(ex)
|
||||
error_message = f"Couldn't update submodules: {str(ex)}"
|
||||
ASCIIColors.error(error_message)
|
||||
show_error_dialog(error_message)
|
||||
return False
|
||||
|
||||
return True
|
||||
except git.GitCommandError as e:
|
||||
print(f"Error during git pull: {e}")
|
||||
except Exception as e:
|
||||
error_message = f"Error during git operations: {str(e)}"
|
||||
ASCIIColors.error(error_message)
|
||||
show_error_dialog(error_message)
|
||||
return False
|
||||
|
||||
def install_requirements():
|
||||
try:
|
||||
subprocess.check_call(["pip", "install", "--upgrade", "-r", "requirements.txt"])
|
||||
subprocess.check_call(["pip", "install", "--upgrade", "-e", "lollms_core"])
|
||||
subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", "-r", "requirements.txt"])
|
||||
subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", "-e", "lollms_core"])
|
||||
ASCIIColors.success("Successfully installed requirements")
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error during pip install: {e}")
|
||||
error_message = f"Error during pip install: {str(e)}"
|
||||
ASCIIColors.error(error_message)
|
||||
show_error_dialog(error_message)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
@ -60,24 +99,31 @@ def main():
|
||||
repo_path = args.repo
|
||||
|
||||
# Perform git pull to update the repository
|
||||
run_git_pull()
|
||||
if run_git_pull():
|
||||
# Install the new requirements
|
||||
install_requirements()
|
||||
|
||||
# Install the new requirements
|
||||
install_requirements()
|
||||
|
||||
# Reload the main script with the original arguments
|
||||
temp_file = "temp_args.txt"
|
||||
if os.path.exists(temp_file):
|
||||
with open(temp_file, "r") as file:
|
||||
args = file.read().split()
|
||||
main_script = "app.py" # Replace with the actual name of your main script
|
||||
os.system(f"python {main_script} {' '.join(args)}")
|
||||
try:
|
||||
os.remove(temp_file)
|
||||
except:
|
||||
print(f"Couldn't remove temp file.\nTry to remove it manually.\nLe fichier se trouve ici: {temp_file}")
|
||||
# Reload the main script with the original arguments
|
||||
temp_file = "temp_args.txt"
|
||||
if os.path.exists(temp_file):
|
||||
with open(temp_file, "r") as file:
|
||||
args = file.read().split()
|
||||
main_script = "app.py" # Replace with the actual name of your main script
|
||||
os.system(f"{sys.executable} {main_script} {' '.join(args)}")
|
||||
try:
|
||||
os.remove(temp_file)
|
||||
except Exception as e:
|
||||
error_message = f"Couldn't remove temp file. Try to remove it manually.\nThe file is located here: {temp_file}\nError: {str(e)}"
|
||||
ASCIIColors.warning(error_message)
|
||||
else:
|
||||
error_message = "Error: Temporary arguments file not found."
|
||||
ASCIIColors.error(error_message)
|
||||
show_error_dialog(error_message)
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("Error: Temporary arguments file not found.")
|
||||
error_message = "Update process failed. Please check the console for more details."
|
||||
ASCIIColors.error(error_message)
|
||||
show_error_dialog(error_message)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Loading…
Reference in New Issue
Block a user