diff --git a/archinstall/lib/configuration.py b/archinstall/lib/configuration.py index 39d39511..2a73330e 100644 --- a/archinstall/lib/configuration.py +++ b/archinstall/lib/configuration.py @@ -10,6 +10,7 @@ from archinstall.lib.args import ArchConfig from archinstall.lib.crypt import encrypt from archinstall.lib.menu.helpers import Confirmation, Selection from archinstall.lib.menu.util import get_password, prompt_dir +from archinstall.lib.models.network import NetworkConfiguration from archinstall.lib.output import debug, logger, warn from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup @@ -58,10 +59,13 @@ class ConfigurationOutput: debug(' -- Chosen configuration --') debug(self.user_config_to_json()) - async def confirm_config(self) -> bool: + async def confirm_config(self, show_install_warnings: bool = False) -> bool: header = f'{tr("The specified configuration will be applied")}. ' header += tr('Would you like to continue?') + '\n' + if show_install_warnings: + header += self._render_install_warnings() + group = MenuItemGroup.yes_no() group.set_preview_for_all(lambda x: self.user_config_to_json()) @@ -79,6 +83,22 @@ class ConfigurationOutput: return True + def get_install_warnings(self) -> list[str]: + warnings: list[str] = [] + + if not isinstance(self._config.network_config, NetworkConfiguration): + warnings.append(tr('Warning: no network configuration selected. Network will need to be set up manually on the installed system.')) + + return warnings + + def _render_install_warnings(self) -> str: + warnings = self.get_install_warnings() + + if not warnings: + return '' + + return '\n' + '\n'.join(f'[yellow]{w}[/]' for w in warnings) + '\n' + def _is_valid_path(self, dest_path: Path) -> bool: dest_path_ok = dest_path.exists() and dest_path.is_dir() if not dest_path_ok: diff --git a/archinstall/lib/global_menu.py b/archinstall/lib/global_menu.py index fa711b39..2baef93d 100644 --- a/archinstall/lib/global_menu.py +++ b/archinstall/lib/global_menu.py @@ -139,7 +139,6 @@ class GlobalMenu(AbstractMenu[None]): action=select_network, value={}, preview_action=self._prev_network_config, - mandatory=True, key='network_config', ), MenuItem( diff --git a/archinstall/lib/models/network.py b/archinstall/lib/models/network.py index f19d1a71..c2273799 100644 --- a/archinstall/lib/models/network.py +++ b/archinstall/lib/models/network.py @@ -25,7 +25,7 @@ class NicType(Enum): case NicType.MANUAL: return tr('Manual configuration') case NicType.NONE: - return tr('No network') + return tr('No network configuration') class _NicSerialization(TypedDict): diff --git a/archinstall/locales/base.pot b/archinstall/locales/base.pot index d3b16766..1c6ba2ee 100644 --- a/archinstall/locales/base.pot +++ b/archinstall/locales/base.pot @@ -633,9 +633,6 @@ msgstr "" msgid "Manual configuration" msgstr "" -msgid "No network" -msgstr "" - msgid "Mark/Unmark a partition as compressed (btrfs only)" msgstr "" @@ -2180,6 +2177,11 @@ msgstr "" msgid "Recommended: Network Manager for desktop, Manual for server" msgstr "" +msgid "" +"Warning: no network configuration selected. Network will need to be set up " +"manually on the installed system." +msgstr "" + msgid "No packages found" msgstr "" diff --git a/archinstall/locales/uk/LC_MESSAGES/base.po b/archinstall/locales/uk/LC_MESSAGES/base.po index 386a41f4..033b1701 100644 --- a/archinstall/locales/uk/LC_MESSAGES/base.po +++ b/archinstall/locales/uk/LC_MESSAGES/base.po @@ -483,7 +483,7 @@ msgid "Define users with sudo privilege: " msgstr "Визначте користувачів із привілеєм sudo: " msgid "No network configuration" -msgstr "Відсутня конфігурація мережі" +msgstr "Без налаштування мережі" msgid "Set desired subvolumes on a btrfs partition" msgstr "Встановіть потрібні підтома на розділі btrfs" @@ -646,9 +646,6 @@ msgstr "Оберіть інтерфейс для додавання" msgid "Manual configuration" msgstr "Ручне налаштування" -msgid "No network" -msgstr "Без мережі" - msgid "Mark/Unmark a partition as compressed (btrfs only)" msgstr "Позначити/зняти позначку розділу як стисненого (лише btrfs)" @@ -2121,6 +2118,9 @@ msgstr "Оберіть конфігурацію мережі" msgid "Recommended: Network Manager for desktop, Manual for server" msgstr "Рекомендовано: Network Manager для робочого столу, ручне налаштування для сервера" +msgid "Warning: no network configuration selected. Network will need to be set up manually on the installed system." +msgstr "Попередження: конфігурацію мережі не обрано. Мережу доведеться налаштувати вручну на встановленій системі." + msgid "No packages found" msgstr "Пакети не знайдено" diff --git a/archinstall/scripts/guided.py b/archinstall/scripts/guided.py index 34133722..5cc03408 100644 --- a/archinstall/scripts/guided.py +++ b/archinstall/scripts/guided.py @@ -216,7 +216,7 @@ def main(arch_config_handler: ArchConfigHandler | None = None) -> None: if not arch_config_handler.args.silent: aborted = False - res: bool = tui.run(config.confirm_config) + res: bool = tui.run(lambda: config.confirm_config(show_install_warnings=True)) if not res: debug('Installation aborted') diff --git a/archinstall/scripts/minimal.py b/archinstall/scripts/minimal.py index 4e897142..681d4266 100644 --- a/archinstall/scripts/minimal.py +++ b/archinstall/scripts/minimal.py @@ -77,7 +77,7 @@ async def main(arch_config_handler: ArchConfigHandler | None = None) -> None: if not arch_config_handler.args.silent: aborted = False - res: bool = tui.run(config.confirm_config) + res: bool = tui.run(lambda: config.confirm_config(show_install_warnings=True)) if not res: debug('Installation aborted')