Re-worked the select_profile() user interaction. It no longer takes options as a parameter, instead it sources the profiles available, prints a curated list but allows for any input that is a valid profile.
This commit is contained in:
parent
78369269a0
commit
1552cc8277
|
|
@ -563,28 +563,26 @@ def select_disk(dict_o_disks):
|
|||
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.
|
||||
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
|
||||
:rtype: str
|
||||
"""
|
||||
profiles = sorted(list(options))
|
||||
shown_profiles = sorted(list(archinstall.list_profiles(filter_top_level_profiles=True)))
|
||||
actual_profiles_raw = shown_profiles + sorted([profile for profile in archinstall.list_profiles() if profile not in shown_profiles])
|
||||
|
||||
if len(profiles) >= 1:
|
||||
for index, profile in enumerate(profiles):
|
||||
if len(shown_profiles) >= 1:
|
||||
for index, profile in enumerate(shown_profiles):
|
||||
print(f"{index}: {profile}")
|
||||
|
||||
print(' -- The above list is a set of pre-programmed profiles. --')
|
||||
print(' -- They might make it easier to install things like desktop environments. --')
|
||||
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:
|
||||
return Profile(None, selected_profile)
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ def ask_user_questions():
|
|||
|
||||
# Ask for archinstall-specific profiles (such as desktop environments etc)
|
||||
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:
|
||||
archinstall.arguments['profile'] = Profile(installer=None, path=archinstall.arguments['profile'])
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue