From 7e7133330ed78fd96f4500a54150a01ae081d845 Mon Sep 17 00:00:00 2001
From: RedBearAK <64876997+RedBearAK@users.noreply.github.com>
Date: Sun, 22 Dec 2024 01:38:48 -0900
Subject: [PATCH 1/2] Rework how installer method gets dispatched

---
 setup_toshy.py | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/setup_toshy.py b/setup_toshy.py
index 7125012f..fc98def1 100755
--- a/setup_toshy.py
+++ b/setup_toshy.py
@@ -1549,28 +1549,38 @@ def install_distro_pkgs():
         error(f'Problem setting up package manager distro lists:\n\t{key_err}')
         safe_shutdown(1)
 
+    def call_installer_method(installer_method):
+        """Utility function to call the installer function and handle post-call tasks."""
+        if callable(installer_method):  # Ensure the passed method is callable
+            print(f"Calling installer dispatcher method:\n {installer_method.__name__}")
+            installer_method()  # Call the function
+            native_pkg_installer.show_pkg_install_success_msg()
+            show_task_completed_msg()
+        else:
+            obj_name = getattr(installer_method, "__name__", str(installer_method))
+            error(f"The provided installer_method argument is not a callable:\n {obj_name}")
+            safe_shutdown(1)
+
     ###########################################################################
     ###  PACKAGE MANAGER DISPATCHER  ##########################################
     ###########################################################################
     # map installer dispatcher class static methods to each pkg mgr distro list
     pkg_mgr_dispatch_map = {
-        tuple(transupd_distros):        PackageInstallerDispatcher.install_on_transupd_distro,
-        tuple(rpmostree_distros):       PackageInstallerDispatcher.install_on_rpmostree_distro,
-        tuple(dnf_distros):             PackageInstallerDispatcher.install_on_dnf_distro,
-        tuple(zypper_distros):          PackageInstallerDispatcher.install_on_zypper_distro,
         tuple(apt_distros):             PackageInstallerDispatcher.install_on_apt_distro,
-        tuple(pacman_distros):          PackageInstallerDispatcher.install_on_pacman_distro,
+        tuple(dnf_distros):             PackageInstallerDispatcher.install_on_dnf_distro,
         tuple(eopkg_distros):           PackageInstallerDispatcher.install_on_eopkg_distro,
+        tuple(pacman_distros):          PackageInstallerDispatcher.install_on_pacman_distro,
+        tuple(rpmostree_distros):       PackageInstallerDispatcher.install_on_rpmostree_distro,
+        tuple(transupd_distros):        PackageInstallerDispatcher.install_on_transupd_distro,
         tuple(xbps_distros):            PackageInstallerDispatcher.install_on_xbps_distro,
+        tuple(zypper_distros):          PackageInstallerDispatcher.install_on_zypper_distro,
         # add any new package manager distro lists...
     }
 
-    # Determine the correct installation function
-    for distro_list, installer_function in pkg_mgr_dispatch_map.items():
+    # Determine the correct installation class method
+    for distro_list, installer_method in pkg_mgr_dispatch_map.items():
         if cnfg.DISTRO_ID in distro_list:
-            installer_function()
-            native_pkg_installer.show_pkg_install_success_msg()
-            show_task_completed_msg()
+            call_installer_method(installer_method)
             return
     # exit message in case there is no package manager distro list with distro name inside
     exit_with_invalid_distro_error(pkg_mgr_err=True)

From 2e2f3d696f87b9e11303e46f7450d5253741052f Mon Sep 17 00:00:00 2001
From: RedBearAK <64876997+RedBearAK@users.noreply.github.com>
Date: Sun, 22 Dec 2024 01:43:37 -0900
Subject: [PATCH 2/2] Sort pkg manager distro lists

---
 setup_toshy.py | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/setup_toshy.py b/setup_toshy.py
index fc98def1..00ec5f47 100755
--- a/setup_toshy.py
+++ b/setup_toshy.py
@@ -1512,38 +1512,38 @@ def install_distro_pkgs():
         if cnfg.systemctl_present or 'systemd' not in pkg
     ]
 
-    transupd_distros            = []    # 'transactional-update': openSUSE MicroOS/Aeon/Kalpa
-    rpmostree_distros           = []    # 'rpm-ostree': Fedora atomic/immutables
-    dnf_distros                 = []    # 'dnf': Fedora/RHEL/OpenMandriva
-    zypper_distros              = []    # 'zypper': openSUSE Tumbleweed/Leap
     apt_distros                 = []    # 'apt': Debian/Ubuntu
-    pacman_distros              = []    # 'pacman': Arch, BTW
+    dnf_distros                 = []    # 'dnf': Fedora/RHEL/OpenMandriva
     eopkg_distros               = []    # 'eopkg': Solus
+    pacman_distros              = []    # 'pacman': Arch, BTW
+    rpmostree_distros           = []    # 'rpm-ostree': Fedora atomic/immutables
+    transupd_distros            = []    # 'transactional-update': openSUSE MicroOS/Aeon/Kalpa
     xbps_distros                = []    # 'xbps-install': Void
+    zypper_distros              = []    # 'zypper': openSUSE Tumbleweed/Leap
 
     # assemble specific pkg mgr distro lists
 
     try:
-        transupd_distros        += distro_groups_map['microos-based']
-
-        rpmostree_distros       += distro_groups_map['fedora-immutables']
+        apt_distros             += distro_groups_map['ubuntu-based']
+        apt_distros             += distro_groups_map['debian-based']
 
         dnf_distros             += distro_groups_map['fedora-based']
         dnf_distros             += distro_groups_map['rhel-based']
         dnf_distros             += distro_groups_map['mandriva-based']
 
-        zypper_distros          += distro_groups_map['tumbleweed-based']
-        zypper_distros          += distro_groups_map['leap-based']
-
-        apt_distros             += distro_groups_map['ubuntu-based']
-        apt_distros             += distro_groups_map['debian-based']
+        eopkg_distros           += distro_groups_map['solus-based']
 
         pacman_distros          += distro_groups_map['arch-based']
 
-        eopkg_distros           += distro_groups_map['solus-based']
+        rpmostree_distros       += distro_groups_map['fedora-immutables']
+
+        transupd_distros        += distro_groups_map['microos-based']
 
         xbps_distros            += distro_groups_map['void-based']
 
+        zypper_distros          += distro_groups_map['tumbleweed-based']
+        zypper_distros          += distro_groups_map['leap-based']
+
     except (KeyError, TypeError) as key_err:
         print()
         error(f'Problem setting up package manager distro lists:\n\t{key_err}')