Added a advanced=bool flag to Profile() class and enabled it on the cosmic-epoch profile (#2619)

* Added a advanced=True flag to Profile() class, to be able to hide certain profiles behind --advanced

* Removed debugging sleep

* Made sure cosmic-greeter was hidden behind --advanced, and cleaned up --advanced checks on Profile()

* storage['arguments'] is not defined during code-init, falling back to sys.argv for cosmic-greeter check
This commit is contained in:
Anton Hvornum 2024-08-22 08:28:16 +02:00 committed by GitHub
parent 00eeae0abd
commit 6d0cf26eba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 28 additions and 10 deletions

View File

@ -8,7 +8,7 @@ if TYPE_CHECKING:
class CosmicProfile(XorgProfile): class CosmicProfile(XorgProfile):
def __init__(self): def __init__(self):
super().__init__('cosmic-epoch', ProfileType.DesktopEnv, description='') super().__init__('cosmic-epoch', ProfileType.DesktopEnv, description='', advanced=True)
@property @property
def packages(self) -> List[str]: def packages(self) -> List[str]:

View File

@ -1,12 +1,14 @@
from __future__ import annotations from __future__ import annotations
import sys
from enum import Enum, auto from enum import Enum, auto
from typing import List, Optional, Any, Dict, TYPE_CHECKING from typing import List, Optional, Any, Dict, TYPE_CHECKING
from archinstall.lib.utils.util import format_cols from ..lib.utils.util import format_cols
from ..lib.storage import storage
if TYPE_CHECKING: if TYPE_CHECKING:
from archinstall.lib.installer import Installer from ..lib.installer import Installer
_: Any _: Any
@ -33,7 +35,10 @@ class GreeterType(Enum):
Sddm = 'sddm' Sddm = 'sddm'
Gdm = 'gdm' Gdm = 'gdm'
Ly = 'ly' Ly = 'ly'
CosmicSession = "cosmic-greeter"
# .. todo:: Remove when we un-hide cosmic behind --advanced
if '--advanced' in sys.argv:
CosmicSession = "cosmic-greeter"
class SelectResult(Enum): class SelectResult(Enum):
NewSelection = auto() NewSelection = auto()
@ -51,12 +56,14 @@ class Profile:
packages: List[str] = [], packages: List[str] = [],
services: List[str] = [], services: List[str] = [],
support_gfx_driver: bool = False, support_gfx_driver: bool = False,
support_greeter: bool = False support_greeter: bool = False,
advanced: bool = False
): ):
self.name = name self.name = name
self.description = description self.description = description
self.profile_type = profile_type self.profile_type = profile_type
self.custom_settings: Dict[str, Any] = {} self.custom_settings: Dict[str, Any] = {}
self.advanced = advanced
self._support_gfx_driver = support_gfx_driver self._support_gfx_driver = support_gfx_driver
self._support_greeter = support_greeter self._support_greeter = support_greeter
@ -93,6 +100,13 @@ class Profile:
""" """
return None return None
def _advanced_check(self):
"""
Used to control if the Profile() should be visible or not in different contexts.
Returns True if --advanced is given on a Profile(advanced=True) instance.
"""
return self.advanced is False or storage['arguments'].get('advanced', False) is True
def install(self, install_session: 'Installer'): def install(self, install_session: 'Installer'):
""" """
Performs installation steps when this profile was selected Performs installation steps when this profile was selected
@ -138,16 +152,16 @@ class Profile:
return self.profile_type in top_levels return self.profile_type in top_levels
def is_desktop_profile(self) -> bool: def is_desktop_profile(self) -> bool:
return self.profile_type == ProfileType.Desktop return self.profile_type == ProfileType.Desktop if self._advanced_check() else False
def is_server_type_profile(self) -> bool: def is_server_type_profile(self) -> bool:
return self.profile_type == ProfileType.ServerType return self.profile_type == ProfileType.ServerType
def is_desktop_type_profile(self) -> bool: def is_desktop_type_profile(self) -> bool:
return self.profile_type == ProfileType.DesktopEnv or self.profile_type == ProfileType.WindowMgr return (self.profile_type == ProfileType.DesktopEnv or self.profile_type == ProfileType.WindowMgr) if self._advanced_check() else False
def is_xorg_type_profile(self) -> bool: def is_xorg_type_profile(self) -> bool:
return self.profile_type == ProfileType.Xorg return self.profile_type == ProfileType.Xorg if self._advanced_check() else False
def is_tailored(self) -> bool: def is_tailored(self) -> bool:
return self.profile_type == ProfileType.Tailored return self.profile_type == ProfileType.Tailored

View File

@ -12,12 +12,14 @@ class XorgProfile(Profile):
name: str = 'Xorg', name: str = 'Xorg',
profile_type: ProfileType = ProfileType.Xorg, profile_type: ProfileType = ProfileType.Xorg,
description: str = str(_('Installs a minimal system as well as xorg and graphics drivers.')), description: str = str(_('Installs a minimal system as well as xorg and graphics drivers.')),
advanced: bool = False
): ):
super().__init__( super().__init__(
name, name,
profile_type, profile_type,
description=description, description=description,
support_gfx_driver=True support_gfx_driver=True,
advanced=advanced
) )
def preview_text(self) -> Optional[str]: def preview_text(self) -> Optional[str]:

View File

@ -10,7 +10,7 @@ from tempfile import NamedTemporaryFile
from types import ModuleType from types import ModuleType
from typing import List, TYPE_CHECKING, Any, Optional, Dict, Union from typing import List, TYPE_CHECKING, Any, Optional, Dict, Union
from archinstall.default_profiles.profile import Profile, GreeterType from ...default_profiles.profile import Profile, GreeterType
from .profile_model import ProfileConfiguration from .profile_model import ProfileConfiguration
from ..hardware import GfxDriver from ..hardware import GfxDriver
from ..menu import MenuSelectionType, Menu, MenuSelection from ..menu import MenuSelectionType, Menu, MenuSelection
@ -194,6 +194,8 @@ class ProfileHandler:
case GreeterType.Ly: case GreeterType.Ly:
packages = ['ly'] packages = ['ly']
service = ['ly'] service = ['ly']
case GreeterType.CosmicSession:
packages = ['cosmic-greeter']
if packages: if packages:
install_session.add_additional_packages(packages) install_session.add_additional_packages(packages)