Update logging for some functions
- Unified view of warning (red) and info (yellow) logs - Fixed some PEP8 related issues, like removing redundant f-strings and replacing double quotes to single ones - Removed warning logging level for simple logs - Removed other background color settings for logs to fully close https://github.com/archlinux/archinstall/pull/171
This commit is contained in:
parent
2d3d3c54ef
commit
f5b6e7bafe
|
|
@ -128,7 +128,7 @@ class BlockDevice():
|
|||
|
||||
@property
|
||||
def uuid(self):
|
||||
log(f'BlockDevice().uuid is untested!', level=LOG_LEVELS.Warning, fg='yellow')
|
||||
log('BlockDevice().uuid is untested!', level=LOG_LEVELS.Warning, fg='yellow')
|
||||
"""
|
||||
Returns the disk UUID as returned by lsblk.
|
||||
This is more reliable than relying on /dev/disk/by-partuuid as
|
||||
|
|
@ -292,7 +292,7 @@ class Partition():
|
|||
raise DiskError(f"Attempting to encrypt a partition that was not marked for encryption: {self}")
|
||||
|
||||
if not self.safe_to_format():
|
||||
log(f"Partition {self} was marked as protected but encrypt() was called on it!", level=LOG_LEVELS.Error, fg="red")
|
||||
log(f" * Partition {self} was marked as protected but encrypt() was called on it! * ", level=LOG_LEVELS.Error, fg='red')
|
||||
return False
|
||||
|
||||
handle = luks2(self, None, None)
|
||||
|
|
|
|||
|
|
@ -79,14 +79,14 @@ class Installer():
|
|||
self.genfstab()
|
||||
|
||||
if not (missing_steps := self.post_install_check()):
|
||||
self.log('Installation completed without any errors. You may now reboot.', bg='black', fg='green', level=LOG_LEVELS.Info)
|
||||
self.log('Installation completed without any errors. You may now reboot.', fg='green', level=LOG_LEVELS.Info)
|
||||
self.sync_log_to_install_medium()
|
||||
|
||||
return True
|
||||
else:
|
||||
self.log('Some required steps were not successfully installed/configured before leaving the installer:', bg='black', fg='red', level=LOG_LEVELS.Warning)
|
||||
self.log('Some required steps were not successfully installed/configured before leaving the installer:', fg='red', level=LOG_LEVELS.Warning)
|
||||
for step in missing_steps:
|
||||
self.log(f' - {step}', bg='black', fg='red', level=LOG_LEVELS.Warning)
|
||||
self.log(f' - {step}', fg='red', level=LOG_LEVELS.Warning)
|
||||
|
||||
self.log(f"Detailed error logs can be found at: {storage['LOG_PATH']}", level=LOG_LEVELS.Warning)
|
||||
self.log(f"Submit this zip file as an issue to https://github.com/archlinux/archinstall/issues", level=LOG_LEVELS.Warning)
|
||||
|
|
@ -168,7 +168,7 @@ class Installer():
|
|||
return True
|
||||
else:
|
||||
self.log(
|
||||
f"Time zone {zone} does not exist, continuing with system default.",
|
||||
f" * Timezone \"{zone}\" does not exist, continuing with system default * ",
|
||||
level=LOG_LEVELS.Warning,
|
||||
fg='red'
|
||||
)
|
||||
|
|
@ -460,5 +460,5 @@ class Installer():
|
|||
vconsole.write(f'KEYMAP={language}\n')
|
||||
vconsole.write(f'FONT=lat9w-16\n')
|
||||
else:
|
||||
self.log(f'Keyboard language was not changed from default (no language specified).', fg="yellow", level=LOG_LEVELS.Info)
|
||||
self.log('Keyboard language was not changed from default (no language specified).', fg='yellow', level=LOG_LEVELS.Info)
|
||||
return True
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ def list_mirrors():
|
|||
try:
|
||||
response = urllib.request.urlopen(url)
|
||||
except urllib.error.URLError as err:
|
||||
log(f'Could not fetch an active mirror-list: {err}', level=LOG_LEVELS.Warning, fg="yellow")
|
||||
log(f"Could not fetch an active mirror-list: {err}", level=LOG_LEVELS.Warning, fg='yellow')
|
||||
return regions
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -100,12 +100,12 @@ def log(*args, **kwargs):
|
|||
Path(absolute_logfile).parents[0].mkdir(exist_ok=True, parents=True)
|
||||
except PermissionError:
|
||||
# Fallback to creating the log file in the current folder
|
||||
err_string = f"Not enough permission to place log file at {absolute_logfile}, creating it in {Path('./').absolute()/filename} instead."
|
||||
err_string = f" * Not enough permission to place log file at {absolute_logfile}, creating it in {Path('./').absolute()/filename} instead * "
|
||||
absolute_logfile = Path('./').absolute()/filename
|
||||
absolute_logfile.parents[0].mkdir(exist_ok=True)
|
||||
absolute_logfile = str(absolute_logfile)
|
||||
storage['LOG_PATH'] = './'
|
||||
log(err_string, fg="red")
|
||||
log(err_string, fg='red')
|
||||
|
||||
Path(absolute_logfile).touch() # Overkill?
|
||||
|
||||
|
|
|
|||
|
|
@ -22,11 +22,7 @@ def get_longest_option(options):
|
|||
def check_for_correct_username(username):
|
||||
if re.match(r'^[a-z_][a-z0-9_-]*\$?$', username) and len(username) <= 32:
|
||||
return True
|
||||
log(
|
||||
"The username you entered is invalid. Try again",
|
||||
level=LOG_LEVELS.Warning,
|
||||
fg='red'
|
||||
)
|
||||
log(' * The username you entered is invalid. Try again * ', fg='red')
|
||||
return False
|
||||
|
||||
def do_countdown():
|
||||
|
|
@ -138,8 +134,7 @@ def ask_for_a_timezone():
|
|||
return timezone
|
||||
else:
|
||||
log(
|
||||
f"Specified timezone {timezone} does not exist.",
|
||||
level=LOG_LEVELS.Warning,
|
||||
f"* Specified timezone {timezone} does not exist * ",
|
||||
fg='red'
|
||||
)
|
||||
|
||||
|
|
@ -185,8 +180,7 @@ def ask_to_configure_network():
|
|||
break
|
||||
except ValueError:
|
||||
log(
|
||||
"You need to enter a valid IP in IP-config mode.",
|
||||
level=LOG_LEVELS.Warning,
|
||||
'You need to enter a valid IP in IP-config mode',
|
||||
fg='red'
|
||||
)
|
||||
|
||||
|
|
@ -201,8 +195,7 @@ def ask_to_configure_network():
|
|||
break
|
||||
except ValueError:
|
||||
log(
|
||||
"You need to enter a valid gateway (router) IP address.",
|
||||
level=LOG_LEVELS.Warning,
|
||||
'You need to enter a valid gateway (router) IP address',
|
||||
fg='red'
|
||||
)
|
||||
|
||||
|
|
@ -258,15 +251,15 @@ def generic_select(options, input_text="Select one of the above by index or abso
|
|||
# Checking if options are different from `list` or `dict`
|
||||
if type(options) not in [list, dict]:
|
||||
log(f" * Generic select doesn't support ({type(options)}) as type of options * ", fg='red')
|
||||
log(" * If problem persists, please create an issue on https://github.com/archlinux/archinstall/issues * ", fg='yellow')
|
||||
log('If problem persists, please create an issue on https://github.com/archlinux/archinstall/issues', fg='yellow')
|
||||
raise RequirementError("generic_select() requires list or dictionary as options.")
|
||||
# To allow only `list` and `dict`, converting values of options here.
|
||||
# Therefore, now we can only provide the dictionary itself
|
||||
if type(options) == dict: options = list(options.values())
|
||||
if sort: options = sorted(options) # As we pass only list and dict (converted to list), we can skip converting to list
|
||||
if len(options) == 0:
|
||||
log(f" * Generic select didn't find any options to choose from * ", fg='red')
|
||||
log(" * If problem persists, please create an issue on https://github.com/archlinux/archinstall/issues * ", fg='yellow')
|
||||
log(' * Generic select didn\'t find any options to choose from * ', fg='red')
|
||||
log('If problem persists, please create an issue on https://github.com/archlinux/archinstall/issues', fg='yellow')
|
||||
raise RequirementError('generic_select() requires at least one option to proceed.')
|
||||
|
||||
|
||||
|
|
@ -398,7 +391,7 @@ def select_language(options, show_only_country_codes=True):
|
|||
new_options = list(search_keyboard_layout(filter_string))
|
||||
|
||||
if len(new_options) <= 0:
|
||||
log(f"Search string '{filter_string}' yielded no results, please try another search.", fg='yellow')
|
||||
log(f"Search string '{filter_string}' yielded no results, please try another search", fg='yellow')
|
||||
continue
|
||||
|
||||
return select_language(new_options, show_only_country_codes=False)
|
||||
|
|
@ -411,7 +404,7 @@ def select_language(options, show_only_country_codes=True):
|
|||
elif verify_keyboard_layout(selected_language):
|
||||
return selected_language
|
||||
else:
|
||||
log(" * Given language wasn't found * ", fg='red')
|
||||
log(' * Given language was not found * ', fg='red')
|
||||
|
||||
raise RequirementError("Selecting languages require a least one language to be given as an option.")
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from archinstall.lib.hardware import hasUEFI
|
|||
from archinstall.lib.profiles import Profile
|
||||
|
||||
if hasUEFI() is False:
|
||||
archinstall.log("ArchInstall currently only supports machines booted with UEFI.\nMBR & GRUB support is coming in version 2.2.0!", fg="red", level=archinstall.LOG_LEVELS.Error)
|
||||
archinstall.log(" * ArchInstall currently only supports machines booted with UEFI.\nMBR & GRUB support is coming in version 2.2.0! * ", fg='red', level=archinstall.LOG_LEVELS.Error)
|
||||
exit(1)
|
||||
|
||||
def ask_user_questions():
|
||||
|
|
@ -18,8 +18,8 @@ def ask_user_questions():
|
|||
try:
|
||||
archinstall.arguments['keyboard-language'] = archinstall.select_language(archinstall.list_keyboard_languages()).strip()
|
||||
break
|
||||
except archinstall.RequirementError as err:
|
||||
archinstall.log(err, fg="red")
|
||||
except archinstall.RequirementError as e:
|
||||
archinstall.log(f" * {e} * ", fg='red')
|
||||
|
||||
# Before continuing, set the preferred keyboard layout/language in the current terminal.
|
||||
# This will just help the user with the next following questions.
|
||||
|
|
@ -33,7 +33,7 @@ def ask_user_questions():
|
|||
archinstall.arguments['mirror-region'] = archinstall.select_mirror_regions(archinstall.list_mirrors())
|
||||
break
|
||||
except archinstall.RequirementError as e:
|
||||
archinstall.log(e, fg="red")
|
||||
archinstall.log(f" * {e} * ", fg='red')
|
||||
else:
|
||||
selected_region = archinstall.arguments['mirror-region']
|
||||
archinstall.arguments['mirror-region'] = {selected_region : archinstall.list_mirrors()[selected_region]}
|
||||
|
|
@ -67,13 +67,13 @@ def ask_user_questions():
|
|||
|
||||
# We then ask what to do with the partitions.
|
||||
if (option := archinstall.ask_for_disk_layout()) == 'abort':
|
||||
archinstall.log(f"Safely aborting the installation. No changes to the disk or system has been made.")
|
||||
archinstall.log('Safely aborting the installation. No changes to the disk or system has been made', fg='yellow')
|
||||
exit(1)
|
||||
elif option == 'keep-existing':
|
||||
archinstall.arguments['harddrive'].keep_partitions = True
|
||||
|
||||
archinstall.log(f" ** You will now select which partitions to use by selecting mount points (inside the installation). **")
|
||||
archinstall.log(f" ** The root would be a simple / and the boot partition /boot (as all paths are relative inside the installation). **")
|
||||
archinstall.log(' -- You will now select which partitions to use by selecting mount points (inside the installation) -- ')
|
||||
archinstall.log(' -- The root would be a simple / and the boot partition /boot (as all paths are relative inside the installation) -- ')
|
||||
mountpoints_set = []
|
||||
while True:
|
||||
# Select a partition
|
||||
|
|
@ -103,8 +103,8 @@ def ask_user_questions():
|
|||
if (autodetected_filesystem := partition.detect_inner_filesystem(old_password)):
|
||||
new_filesystem = autodetected_filesystem
|
||||
else:
|
||||
archinstall.log(f"Could not auto-detect the filesystem inside the encrypted volume.", fg='red')
|
||||
archinstall.log(f"A filesystem must be defined for the unlocked encrypted partition.")
|
||||
archinstall.log(' * Could not auto-detect the filesystem inside the encrypted volume * ', fg='red')
|
||||
archinstall.log('A filesystem must be defined for the unlocked encrypted partition')
|
||||
continue
|
||||
break
|
||||
|
||||
|
|
@ -114,8 +114,9 @@ def ask_user_questions():
|
|||
try:
|
||||
partition.format(new_filesystem, path='/dev/null', log_formatting=False, allow_formatting=True)
|
||||
except archinstall.UnknownFilesystemFormat:
|
||||
archinstall.log(f"Selected filesystem is not supported yet. If you want archinstall to support '{new_filesystem}', please create a issue-ticket suggesting it on github at https://github.com/archlinux/archinstall/issues.")
|
||||
archinstall.log(f"Until then, please enter another supported filesystem.")
|
||||
archinstall.log(' * Selected filesystem is not supported yet * ', fg='red')
|
||||
archinstall.log(f"If you want archinstall to support '{new_filesystem}', please create a issue-ticket suggesting it on github at https://github.com/archlinux/archinstall/issues.")
|
||||
archinstall.log('Until then, please enter another supported filesystem')
|
||||
continue
|
||||
except archinstall.SysCallError:
|
||||
pass # Expected exception since mkfs.<format> can not format /dev/null.
|
||||
|
|
@ -178,7 +179,7 @@ def ask_user_questions():
|
|||
with archinstall.arguments['profile'].load_instructions(namespace=f"{archinstall.arguments['profile'].namespace}.py") as imported:
|
||||
if not imported._prep_function():
|
||||
archinstall.log(
|
||||
' * Profile\'s preparation requirements was not fulfilled.',
|
||||
' * Profile\'s preparation requirements was not fulfilled * ',
|
||||
fg='red'
|
||||
)
|
||||
exit(1)
|
||||
|
|
@ -204,11 +205,11 @@ def ask_user_questions():
|
|||
if len(archinstall.arguments['packages']):
|
||||
# Verify packages that were given
|
||||
try:
|
||||
archinstall.log(f"Verifying that additional packages exist (this might take a few seconds)")
|
||||
archinstall.log('Verifying that additional packages exist (this might take a few seconds)', fg='yellow')
|
||||
archinstall.validate_package_list(archinstall.arguments['packages'])
|
||||
break
|
||||
except archinstall.RequirementError as e:
|
||||
archinstall.log(e, fg='red')
|
||||
archinstall.log(f" * {e} * ", fg='red')
|
||||
archinstall.arguments['packages'] = None # Clear the packages to trigger a new input question
|
||||
else:
|
||||
# no additional packages were selected, which we'll allow
|
||||
|
|
@ -218,7 +219,7 @@ def ask_user_questions():
|
|||
if not archinstall.arguments.get('nic', None):
|
||||
archinstall.arguments['nic'] = archinstall.ask_to_configure_network()
|
||||
if not archinstall.arguments['nic']:
|
||||
archinstall.log(f"No network configuration was selected. Network is going to be unavailable until configured manually!", fg="yellow")
|
||||
archinstall.log('No network configuration was selected. Network is going to be unavailable until configured manually!', fg='yellow')
|
||||
|
||||
if not archinstall.arguments.get('timezone', None):
|
||||
archinstall.arguments['timezone'] = archinstall.ask_for_a_timezone()
|
||||
|
|
@ -299,7 +300,7 @@ def perform_installation(mountpoint):
|
|||
# Certain services might be running that affects the system during installation.
|
||||
# Currently, only one such service is "reflector.service" which updates /etc/pacman.d/mirrorlist
|
||||
# We need to wait for it before we continue since we opted in to use a custom mirror/region.
|
||||
installation.log(f'Waiting for automatic mirror selection (reflector) to complete.', level=archinstall.LOG_LEVELS.Info)
|
||||
installation.log('Waiting for automatic mirror selection (reflector) to complete...', level=archinstall.LOG_LEVELS.Info)
|
||||
while archinstall.service_state('reflector') not in ('dead', 'failed'):
|
||||
time.sleep(1)
|
||||
|
||||
|
|
@ -356,9 +357,9 @@ def perform_installation(mountpoint):
|
|||
if (root_pw := archinstall.arguments.get('!root-password', None)) and len(root_pw):
|
||||
installation.user_set_pw('root', root_pw)
|
||||
|
||||
installation.log("For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation", fg="yellow")
|
||||
choice = input("Would you like to chroot into the newly created installation and perform post-installation configuration? [Y/n] ")
|
||||
if choice.lower() in ("y", ""):
|
||||
installation.log('For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation', fg='yellow')
|
||||
choice = input('Would you like to chroot into the newly created installation and perform post-installation configuration? [Y/n] ')
|
||||
if choice.lower() in ('y', ''):
|
||||
try:
|
||||
installation.drop_to_shell()
|
||||
except:
|
||||
|
|
|
|||
Loading…
Reference in New Issue