index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | profiles/desktop.py | 50 |
diff --git a/profiles/desktop.py b/profiles/desktop.py index bd3353e8..e94d3505 100644 --- a/profiles/desktop.py +++ b/profiles/desktop.py @@ -1,9 +1,16 @@ # A desktop environment selector. +from typing import Any, TYPE_CHECKING + import archinstall +from archinstall import log, Menu +from archinstall.lib.menu.menu import MenuSelectionType + +if TYPE_CHECKING: + _: Any is_top_level_profile = True -__description__ = 'Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway' +__description__ = str(_('Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway')) # New way of defining packages for a profile, which is iterable and can be used out side # of the profile to get a list of "what packages will be installed". @@ -38,29 +45,36 @@ __supported__ = [ ] -def _prep_function(*args, **kwargs): +def _prep_function(*args, **kwargs) -> bool: """ Magic function called by the importing installer before continuing any further. It also avoids executing any other code in this stage. So it's a safe way to ask the user for more input before any other installer steps start. """ - desktop = archinstall.Menu('Select your desired desktop environment', __supported__, skip=False).run() - - # Temporarily store the selected desktop profile - # in a session-safe location, since this module will get reloaded - # the next time it gets executed. - if not archinstall.storage.get('_desktop_profile', None): - archinstall.storage['_desktop_profile'] = desktop - if not archinstall.arguments.get('desktop-environment', None): - archinstall.arguments['desktop-environment'] = desktop - profile = archinstall.Profile(None, desktop) - # Loading the instructions with a custom namespace, ensures that a __name__ comparison is never triggered. - with profile.load_instructions(namespace=f"{desktop}.py") as imported: - if hasattr(imported, '_prep_function'): - return imported._prep_function() - else: - print(f"Deprecated (??): {desktop} profile has no _prep_function() anymore") + choice = Menu(str(_('Select your desired desktop environment')), __supported__).run() + + if choice.type_ != MenuSelectionType.Selection: + return False + + if choice.value: + # Temporarily store the selected desktop profile + # in a session-safe location, since this module will get reloaded + # the next time it gets executed. + if not archinstall.storage.get('_desktop_profile', None): + archinstall.storage['_desktop_profile'] = choice.value + if not archinstall.arguments.get('desktop-environment', None): + archinstall.arguments['desktop-environment'] = choice.value + profile = archinstall.Profile(None, choice.value) + # Loading the instructions with a custom namespace, ensures that a __name__ comparison is never triggered. + with profile.load_instructions(namespace=f"{choice.value}.py") as imported: + if hasattr(imported, '_prep_function'): + return imported._prep_function() + else: + log(f"Deprecated (??): {choice.value} profile has no _prep_function() anymore") + exit(1) + + return False if __name__ == 'desktop': |