Merge pull request #507 from archlinux/torxed-fix-382

Re-worked the select_profile() user interaction.
This commit is contained in:
Anton Hvornum 2021-05-22 21:04:50 +02:00 committed by GitHub
commit 86b415e25c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 18 deletions

View File

@ -17,7 +17,7 @@ from .hardware import AVAILABLE_GFX_DRIVERS, has_uefi
from .locale_helpers import list_keyboard_languages, verify_keyboard_layout, search_keyboard_layout from .locale_helpers import list_keyboard_languages, verify_keyboard_layout, search_keyboard_layout
from .networking import list_interfaces from .networking import list_interfaces
from .output import log from .output import log
from .profiles import Profile from .profiles import Profile, list_profiles
# TODO: Some inconsistencies between the selection processes. # TODO: Some inconsistencies between the selection processes.
@ -563,28 +563,25 @@ def select_disk(dict_o_disks):
raise DiskError('select_disk() requires a non-empty dictionary of disks to select from.') raise DiskError('select_disk() requires a non-empty dictionary of disks to select from.')
def select_profile(options): def select_profile():
""" """
Asks the user to select a profile from the `options` dictionary parameter. Asks the user to select a profile from the available profiles.
Usually this is combined with :ref:`archinstall.list_profiles`.
:param options: A `dict` where keys are the profile name, value should be a dict containing profile information.
:type options: dict
:return: The name/dictionary key of the selected profile :return: The name/dictionary key of the selected profile
:rtype: str :rtype: str
""" """
profiles = sorted(list(options)) shown_profiles = sorted(list(list_profiles(filter_top_level_profiles=True)))
actual_profiles_raw = shown_profiles + sorted([profile for profile in list_profiles() if profile not in shown_profiles])
if len(profiles) >= 1: if len(shown_profiles) >= 1:
for index, profile in enumerate(profiles): for index, profile in enumerate(shown_profiles):
print(f"{index}: {profile}") print(f"{index}: {profile}")
print(' -- The above list is a set of pre-programmed profiles. --') print(' -- The above list is a set of pre-programmed profiles. --')
print(' -- They might make it easier to install things like desktop environments. --') print(' -- They might make it easier to install things like desktop environments. --')
print(' -- (Leave blank and hit enter to skip this step and continue) --') print(' -- (Leave blank and hit enter to skip this step and continue) --')
selected_profile = generic_select(profiles, 'Enter a pre-programmed profile name if you want to install one: ', options_output=False) selected_profile = generic_select(actual_profiles_raw, 'Enter a pre-programmed profile name if you want to install one: ', options_output=False)
if selected_profile: if selected_profile:
return Profile(None, selected_profile) return Profile(None, selected_profile)
else: else:

View File

@ -54,14 +54,14 @@ def ask_user_questions():
if not archinstall.arguments.get('sys-language', None) and archinstall.arguments.get('advanced', False): if not archinstall.arguments.get('sys-language', None) and archinstall.arguments.get('advanced', False):
archinstall.arguments['sys-language'] = input("Enter a valid locale (language) for your OS, (Default: en_US): ").strip() archinstall.arguments['sys-language'] = input("Enter a valid locale (language) for your OS, (Default: en_US): ").strip()
archinstall.arguments['sys-encoding'] = input("Enter a valid system default encoding for your OS, (Default: utf-8): ").strip() archinstall.arguments['sys-encoding'] = input("Enter a valid system default encoding for your OS, (Default: utf-8): ").strip()
if not archinstall.arguments['sys-language']:
archinstall.arguments['sys-language'] = 'en_US'
if not archinstall.arguments['sys-encoding']:
archinstall.arguments['sys-encoding'] = 'utf-8'
archinstall.log("Keep in mind that if you want multiple locales, post configuration is required.", fg="yellow") archinstall.log("Keep in mind that if you want multiple locales, post configuration is required.", fg="yellow")
if not archinstall.arguments.get('sys-language', None):
archinstall.arguments['sys-language'] = 'en_US'
if not archinstall.arguments.get('sys-encoding', None):
archinstall.arguments['sys-encoding'] = 'utf-8'
# Ask which harddrive/block-device we will install to # Ask which harddrive/block-device we will install to
if archinstall.arguments.get('harddrive', None): if archinstall.arguments.get('harddrive', None):
archinstall.arguments['harddrive'] = archinstall.BlockDevice(archinstall.arguments['harddrive']) archinstall.arguments['harddrive'] = archinstall.BlockDevice(archinstall.arguments['harddrive'])
@ -193,7 +193,7 @@ def ask_user_questions():
# Ask for archinstall-specific profiles (such as desktop environments etc) # Ask for archinstall-specific profiles (such as desktop environments etc)
if not archinstall.arguments.get('profile', None): if not archinstall.arguments.get('profile', None):
archinstall.arguments['profile'] = archinstall.select_profile(archinstall.list_profiles(filter_top_level_profiles=True)) archinstall.arguments['profile'] = archinstall.select_profile()
else: else:
archinstall.arguments['profile'] = Profile(installer=None, path=archinstall.arguments['profile']) archinstall.arguments['profile'] = Profile(installer=None, path=archinstall.arguments['profile'])