This commit is contained in:
admin 2024-01-11 11:40:02 +01:00
parent d470dfac31
commit af88f68a86
4 changed files with 1043 additions and 20 deletions

View file

@ -5,26 +5,24 @@ import json
import json_main import json_main
import download_gitlab import download_gitlab
import download_github import download_github
import install_main
download_foler = "." def sanity_check(download_folder,install_folder):
install_folder = "."
def sanity_check():
# Ensure that the directory structure exists # Ensure that the directory structure exists
if not os.path.exists(download_foler): if not os.path.exists(download_folder):
os.makedirs(download_foler) os.makedirs(download_folder)
# Ensure that the directory structure exists, once again # Ensure that the directory structure exists, once again
if not os.path.exists(install_folder): if not os.path.exists(install_folder):
os.makedirs(install_folder) os.makedirs(install_folder)
# Check if config.json exists and create it with default values if not # Check if config.json exists and create it with default values if not
if not os.path.isfile(download_foler+"config.json"): if not os.path.isfile(download_folder+"config.json"):
default_data = { default_data = {
"first_run": "false", "first_run": "false",
"packages": [] "packages": []
} }
with open(download_foler+"config.json", "w") as json_file: with open(download_folder+"config.json", "w") as json_file:
json.dump(default_data, json_file, indent=4) json.dump(default_data, json_file, indent=4)
# Placeholder functions for SourceForge and Gitea # Placeholder functions for SourceForge and Gitea
@ -37,12 +35,14 @@ def download_from_gitea(api_url, project_id, token, destination, progress_bar, v
print("Gita not supported, yet") print("Gita not supported, yet")
# Function to install all packages # Function to install all packages
def install_all_packages(progress_bar, progress_label,download_location,install_location): def download_all_packages(progress_bar, progress_label, download_location, install_location):
download_foler=download_location download_folder = download_location + "/"
install_folder=install_location install_folder = install_location + "/"
sanity_check() print(f"install location {install_folder}")
print(f"download location {download_folder}")
sanity_check(download_folder,install_folder)
try: try:
with open(download_foler+"config.json", 'r') as file: with open(download_folder+"config.json", 'r') as file:
data = json.load(file) data = json.load(file)
packages = data.get("packages", []) packages = data.get("packages", [])
total_packages = len(packages) total_packages = len(packages)
@ -59,10 +59,10 @@ def install_all_packages(progress_bar, progress_label,download_location,install_
progress_bar.set_fraction(progress_value) progress_bar.set_fraction(progress_value)
if source_type == "github": if source_type == "github":
download_github.download_from_github(source_info["github_url"], app_name, tqdm, version) download_github.download_from_github(source_info["github_url"], download_folder+app_name, tqdm, version) #(api_url, project_id, token, destination, progress_bar)
elif source_type == "gitlab": elif source_type == "gitlab":
download_gitlab.download_and_update(source_info["gitlab_api_url"], source_info["project_id"], download_gitlab.download_and_update(source_info["gitlab_api_url"], source_info["project_id"],
source_info["private_token"], app_name, tqdm, version) source_info["private_token"], download_folder+app_name, tqdm, version)
# Add other source types as needed # Add other source types as needed
else: else:
progress_label.set_text(f"Unsupported source type for {app_name}: {source_type}") progress_label.set_text(f"Unsupported source type for {app_name}: {source_type}")
@ -70,6 +70,7 @@ def install_all_packages(progress_bar, progress_label,download_location,install_
except Exception as e: except Exception as e:
progress_label.set_text(f"Error processing {app_name}: {e}") progress_label.set_text(f"Error processing {app_name}: {e}")
print(f"Error processing {app_name}: {e}") print(f"Error processing {app_name}: {e}")
install_main.install_all_packages()
except FileNotFoundError: except FileNotFoundError:
progress_label.set_text(f"Config file not found.") progress_label.set_text(f"Config file not found.")
print("Config file not found.") print("Config file not found.")

View file

@ -6,7 +6,7 @@ import threading
import download_main import download_main
number_of_tabs = 4 number_of_tabs = 4
download_foler = "." download_folder = "."
class InstallerGUI: class InstallerGUI:
def __init__(self): def __init__(self):
@ -43,11 +43,12 @@ class UpdaterGUI(Gtk.Box):
def on_realize(self, widget): def on_realize(self, widget):
# Run the install_all_packages function in a separate thread when the widget becomes visible # Run the install_all_packages function in a separate thread when the widget becomes visible
threading.Thread(target=self.run_installation).start() print(download_folder)
threading.Thread(target=self.run_installation(download_folder)).start()
def run_installation(self): def run_installation(self,download_folder):
# Pass the progress bar and label to the install_all_packages function # Pass the progress bar and label to the install_all_packages function
download_main.install_all_packages(self.progress_bar, self.progress_label, download_foler,"./data/") download_main.download_all_packages(self.progress_bar, self.progress_label, download_folder,"./data/")
# Glib.idle_add() ? # Glib.idle_add() ?
@ -203,7 +204,7 @@ class MainWindow(Gtk.ApplicationWindow):
# Make the MainWindow class callable as a function # Make the MainWindow class callable as a function
def run_installer(download_foler_tmp): def run_installer(download_foler_tmp):
download_foler = download_foler_tmp download_folder = download_foler_tmp
app = Gtk.Application(application_id="com.spitfire.launcher", app = Gtk.Application(application_id="com.spitfire.launcher",
flags=Gio.ApplicationFlags.FLAGS_NONE) flags=Gio.ApplicationFlags.FLAGS_NONE)
app.connect("activate", lambda app: MainWindow(application=app)) app.connect("activate", lambda app: MainWindow(application=app))

4
src/install_main.py Normal file
View file

@ -0,0 +1,4 @@
def install_all_packages():
print("installing!")

1017
test.json Normal file

File diff suppressed because it is too large Load diff