Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,12 @@ repos:
- pytest
- cryptography
- textual
- repo: https://github.com/pycqa/pylint
rev: v4.0.4
- repo: local
hooks:
- id: pylint
fail_fast: true
require_serial: true
- id: pylint
name: pylint
entry: pylint
language: system
types: [python]
fail_fast: true
require_serial: true
35 changes: 6 additions & 29 deletions archinstall/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,16 @@

from archinstall.lib.args import arch_config_handler
from archinstall.lib.disk.utils import disk_layouts
from archinstall.lib.general import running_from_host
from archinstall.lib.network.wifi_handler import wifi_handler
from archinstall.lib.networking import ping
from archinstall.lib.packages.packages import check_package_upgrade
from archinstall.tui.ui.components import tui as ttui
from archinstall.lib.packages.packages import check_version_upgrade

from .lib.general import running_from_host
from .lib.hardware import SysInfo
from .lib.output import FormattedOutput, debug, error, info, log, warn
from .lib.pacman import Pacman
from .lib.plugins import load_plugin, plugins
from .lib.translationhandler import Language, tr, translation_handler
from .tui.curses_menu import Tui


# @archinstall.plugin decorator hook to programmatically add
Expand Down Expand Up @@ -66,21 +64,6 @@ def _fetch_arch_db() -> None:
sys.exit(1)


def check_version_upgrade() -> str | None:
info('Checking version...')
upgrade = None

upgrade = check_package_upgrade('archinstall')

if upgrade is None:
debug('No archinstall upgrades found')
return None

text = tr('New version available') + f': {upgrade}'
info(text)
return text


def main() -> int:
"""
This can either be run as the compiled and installed application: python setup.py install
Expand All @@ -97,18 +80,16 @@ def main() -> int:

_log_sys_info()

ttui.global_header = 'Archinstall'

if not arch_config_handler.args.offline:
_check_online()
_fetch_arch_db()

if not arch_config_handler.args.skip_version_check:
new_version = check_version_upgrade()
upgrade = check_version_upgrade()

if new_version:
ttui.global_header = f'{ttui.global_header} {new_version}'
info(new_version)
if upgrade:
text = tr('New version available') + f': {upgrade}'
info(text)
time.sleep(3)

if running_from_host():
Expand All @@ -135,9 +116,6 @@ def run_as_a_module() -> None:
except Exception as e:
exc = e
finally:
# restore the terminal to the original state
Tui.shutdown()

if exc:
err = ''.join(traceback.format_exception(exc))
error(err)
Expand All @@ -159,7 +137,6 @@ def run_as_a_module() -> None:
'Language',
'Pacman',
'SysInfo',
'Tui',
'arch_config_handler',
'debug',
'disk_layouts',
Expand Down
17 changes: 7 additions & 10 deletions archinstall/default_profiles/desktop.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
from typing import TYPE_CHECKING, override

from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType, SelectResult
from archinstall.lib.menu.helpers import Selection
from archinstall.lib.output import info
from archinstall.lib.profile.profiles_handler import profile_handler
from archinstall.tui.curses_menu import SelectMenu
from archinstall.tui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.result import ResultType
from archinstall.tui.types import FrameProperties, PreviewStyle
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.ui.result import ResultType

if TYPE_CHECKING:
from archinstall.lib.installer import Installer
Expand Down Expand Up @@ -60,23 +59,21 @@ def do_on_select(self) -> SelectResult:
MenuItem(
p.name,
value=p,
preview_action=lambda x: x.value.preview_text(),
preview_action=lambda x: x.value.preview_text() if x.value else None,
)
for p in profile_handler.get_desktop_profiles()
]

group = MenuItemGroup(items, sort_items=True, sort_case_sensitive=False)
group.set_selected_by_value(self.current_selection)

result = SelectMenu[Profile](
result = Selection[Profile](
group,
multi=True,
allow_reset=True,
allow_skip=True,
preview_style=PreviewStyle.RIGHT,
preview_size='auto',
preview_frame=FrameProperties.max('Info'),
).run()
preview_location='right',
).show()

match result.type_:
case ResultType.Selection:
Expand Down
13 changes: 5 additions & 8 deletions archinstall/default_profiles/desktops/hyprland.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
from archinstall.default_profiles.desktops import SeatAccess
from archinstall.default_profiles.profile import GreeterType, ProfileType
from archinstall.default_profiles.xorg import XorgProfile
from archinstall.lib.menu.helpers import Selection
from archinstall.lib.translationhandler import tr
from archinstall.tui.curses_menu import SelectMenu
from archinstall.tui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.result import ResultType
from archinstall.tui.types import Alignment, FrameProperties
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.ui.result import ResultType


class HyprlandProfile(XorgProfile):
Expand Down Expand Up @@ -57,13 +56,11 @@ def _ask_seat_access(self) -> None:
default = self.custom_settings.get('seat_access', None)
group.set_default_by_value(default)

result = SelectMenu[SeatAccess](
result = Selection[SeatAccess](
group,
header=header,
allow_skip=False,
frame=FrameProperties.min(tr('Seat access')),
alignment=Alignment.CENTER,
).run()
).show()

if result.type_ == ResultType.Selection:
self.custom_settings['seat_access'] = result.get_value().value
Expand Down
13 changes: 5 additions & 8 deletions archinstall/default_profiles/desktops/labwc.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
from archinstall.default_profiles.desktops import SeatAccess
from archinstall.default_profiles.profile import GreeterType, ProfileType
from archinstall.default_profiles.xorg import XorgProfile
from archinstall.lib.menu.helpers import Selection
from archinstall.lib.translationhandler import tr
from archinstall.tui.curses_menu import SelectMenu
from archinstall.tui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.result import ResultType
from archinstall.tui.types import Alignment, FrameProperties
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.ui.result import ResultType


class LabwcProfile(XorgProfile):
Expand Down Expand Up @@ -54,13 +53,11 @@ def _ask_seat_access(self) -> None:
default = self.custom_settings.get('seat_access', None)
group.set_default_by_value(default)

result = SelectMenu[SeatAccess](
result = Selection[SeatAccess](
group,
header=header,
allow_skip=False,
frame=FrameProperties.min(tr('Seat access')),
alignment=Alignment.CENTER,
).run()
).show()

if result.type_ == ResultType.Selection:
self.custom_settings['seat_access'] = result.get_value().value
Expand Down
13 changes: 5 additions & 8 deletions archinstall/default_profiles/desktops/niri.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
from archinstall.default_profiles.desktops import SeatAccess
from archinstall.default_profiles.profile import GreeterType, ProfileType
from archinstall.default_profiles.xorg import XorgProfile
from archinstall.lib.menu.helpers import Selection
from archinstall.lib.translationhandler import tr
from archinstall.tui.curses_menu import SelectMenu
from archinstall.tui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.result import ResultType
from archinstall.tui.types import Alignment, FrameProperties
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.ui.result import ResultType


class NiriProfile(XorgProfile):
Expand Down Expand Up @@ -62,13 +61,11 @@ def _ask_seat_access(self) -> None:
default = self.custom_settings.get('seat_access', None)
group.set_default_by_value(default)

result = SelectMenu[SeatAccess](
result = Selection[SeatAccess](
group,
header=header,
allow_skip=False,
frame=FrameProperties.min(tr('Seat access')),
alignment=Alignment.CENTER,
).run()
).show()

if result.type_ == ResultType.Selection:
self.custom_settings['seat_access'] = result.get_value().value
Expand Down
13 changes: 5 additions & 8 deletions archinstall/default_profiles/desktops/sway.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
from archinstall.default_profiles.desktops import SeatAccess
from archinstall.default_profiles.profile import GreeterType, ProfileType
from archinstall.default_profiles.xorg import XorgProfile
from archinstall.lib.menu.helpers import Selection
from archinstall.lib.translationhandler import tr
from archinstall.tui.curses_menu import SelectMenu
from archinstall.tui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.result import ResultType
from archinstall.tui.types import Alignment, FrameProperties
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.ui.result import ResultType


class SwayProfile(XorgProfile):
Expand Down Expand Up @@ -64,13 +63,11 @@ def _ask_seat_access(self) -> None:
default = self.custom_settings.get('seat_access', None)
group.set_default_by_value(default)

result = SelectMenu[SeatAccess](
result = Selection[SeatAccess](
group,
header=header,
allow_skip=False,
frame=FrameProperties.min(tr('Seat access')),
alignment=Alignment.CENTER,
).run()
).show()

if result.type_ == ResultType.Selection:
self.custom_settings['seat_access'] = result.get_value().value
Expand Down
17 changes: 7 additions & 10 deletions archinstall/default_profiles/server.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
from typing import TYPE_CHECKING, override

from archinstall.default_profiles.profile import Profile, ProfileType, SelectResult
from archinstall.lib.menu.helpers import Selection
from archinstall.lib.output import info
from archinstall.lib.profile.profiles_handler import profile_handler
from archinstall.tui.curses_menu import SelectMenu
from archinstall.tui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.result import ResultType
from archinstall.tui.types import FrameProperties, PreviewStyle
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
from archinstall.tui.ui.result import ResultType

if TYPE_CHECKING:
from archinstall.lib.installer import Installer
Expand All @@ -26,23 +25,21 @@ def do_on_select(self) -> SelectResult:
MenuItem(
p.name,
value=p,
preview_action=lambda x: x.value.preview_text(),
preview_action=lambda x: x.value.preview_text() if x.value else None,
)
for p in profile_handler.get_server_profiles()
]

group = MenuItemGroup(items, sort_items=True)
group.set_selected_by_value(self.current_selection)

result = SelectMenu[Profile](
result = Selection[Profile](
group,
allow_reset=True,
allow_skip=True,
preview_style=PreviewStyle.RIGHT,
preview_size='auto',
preview_frame=FrameProperties.max('Info'),
multi=True,
).run()
preview_location='right',
).show()

match result.type_:
case ResultType.Selection:
Expand Down
Loading
Loading