Cleaned up argument loading slighly. (#1419)
* Cleaned up argument loading slighly. Also flipped some --silent logic to avoid double negatives. --plugin and --conf {'plugin': ...} should now both work.
* Tweaked xorg profile to use list instead of strings. Because strings causes some issues through add_additional_packages() as it ends up as [(xorg, xorg-xinit), nano] instead of a flat list of packages or string.
* Tweaked xorg profile to use list instead of strings. Because strings causes some issues through add_additional_packages() as it ends up as [(xorg, xorg-xinit), nano] instead of a flat list of packages or string.
This commit is contained in:
parent
397cceca90
commit
1086fd686d
|
|
@ -1,5 +1,6 @@
|
|||
"""Arch Linux installer - guided, templates etc."""
|
||||
from argparse import ArgumentParser
|
||||
import typing
|
||||
from argparse import ArgumentParser, Namespace
|
||||
|
||||
from .lib.disk import *
|
||||
from .lib.exceptions import *
|
||||
|
|
@ -132,6 +133,24 @@ def parse_unspecified_argument_list(unknowns :list, multiple :bool = False, erro
|
|||
print(f" We ignore the entry {element} as it isn't related to any argument")
|
||||
return config
|
||||
|
||||
def cleanup_empty_args(args :typing.Union[Namespace, dict]) -> dict:
|
||||
"""
|
||||
Takes arguments (dictionary or argparse Namespace) and removes any
|
||||
None values. This ensures clean mergers during dict.update(args)
|
||||
"""
|
||||
if type(args) == Namespace:
|
||||
args = vars(args)
|
||||
|
||||
clean_args = {}
|
||||
for key, val in args.items():
|
||||
if type(val) == dict:
|
||||
val = cleanup_empty_args(val)
|
||||
|
||||
if val is not None:
|
||||
clean_args[key] = val
|
||||
|
||||
return clean_args
|
||||
|
||||
def get_arguments() -> Dict[str, Any]:
|
||||
""" The handling of parameters from the command line
|
||||
Is done on following steps:
|
||||
|
|
@ -159,14 +178,15 @@ def get_arguments() -> Dict[str, Any]:
|
|||
exit(1)
|
||||
|
||||
# load the parameters. first the known, then the unknowns
|
||||
config.update(vars(args))
|
||||
args = cleanup_empty_args(args)
|
||||
config.update(args)
|
||||
config.update(parse_unspecified_argument_list(unknowns))
|
||||
# amend the parameters (check internal consistency)
|
||||
# Installation can't be silent if config is not passed
|
||||
if args.config is not None :
|
||||
config["silent"] = args.silent
|
||||
else:
|
||||
if args.get('config') is None:
|
||||
config["silent"] = False
|
||||
else:
|
||||
config["silent"] = args.get('silent')
|
||||
|
||||
# avoiding a compatibility issue
|
||||
if 'dry-run' in config:
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ def find_nth(haystack :List[str], needle :str, n :int) -> int:
|
|||
|
||||
def load_plugin(path :str) -> ModuleType:
|
||||
parsed_url = urllib.parse.urlparse(path)
|
||||
log(f"Loading plugin {parsed_url}.", fg="gray", level=logging.INFO)
|
||||
|
||||
# The Profile was not a direct match on a remote URL
|
||||
if not parsed_url.scheme:
|
||||
|
|
@ -96,6 +97,7 @@ def load_plugin(path :str) -> ModuleType:
|
|||
if hasattr(sys.modules[namespace], 'Plugin'):
|
||||
try:
|
||||
plugins[namespace] = sys.modules[namespace].Plugin()
|
||||
log(f"Plugin {plugins[namespace]} has been loaded.", fg="gray", level=logging.INFO)
|
||||
except Exception as err:
|
||||
log(err, level=logging.ERROR)
|
||||
log(f"The above error was detected when initiating the plugin: {path}", fg="red", level=logging.ERROR)
|
||||
|
|
|
|||
|
|
@ -47,9 +47,9 @@ if __name__ == 'xorg':
|
|||
for kernel in archinstall.storage['installation_session'].kernels:
|
||||
archinstall.storage['installation_session'].add_additional_packages(f"{kernel}-headers") # Fixes https://github.com/archlinux/archinstall/issues/585
|
||||
archinstall.storage['installation_session'].add_additional_packages("dkms") # I've had kernel regen fail if it wasn't installed before nvidia-dkms
|
||||
archinstall.storage['installation_session'].add_additional_packages("xorg-server xorg-xinit nvidia-dkms")
|
||||
archinstall.storage['installation_session'].add_additional_packages("xorg-server", "xorg-xinit", "nvidia-dkms")
|
||||
else:
|
||||
archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(archinstall.storage.get('gfx_driver_packages', []))}")
|
||||
archinstall.storage['installation_session'].add_additional_packages(f"xorg-server", "xorg-xinit", *archinstall.storage.get('gfx_driver_packages', []))
|
||||
elif 'amdgpu' in archinstall.storage.get("gfx_driver_packages", []):
|
||||
# The order of these two are important if amdgpu is installed #808
|
||||
if 'amdgpu' in archinstall.storage['installation_session'].MODULES:
|
||||
|
|
@ -60,9 +60,9 @@ if __name__ == 'xorg':
|
|||
archinstall.storage['installation_session'].MODULES.remove('radeon')
|
||||
archinstall.storage['installation_session'].MODULES.append('radeon')
|
||||
|
||||
archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(archinstall.storage.get('gfx_driver_packages', []))}")
|
||||
archinstall.storage['installation_session'].add_additional_packages(f"xorg-server", "xorg-xinit", *archinstall.storage.get('gfx_driver_packages', []))
|
||||
else:
|
||||
archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(archinstall.storage.get('gfx_driver_packages', []))}")
|
||||
archinstall.storage['installation_session'].add_additional_packages(f"xorg-server", "xorg-xinit", *archinstall.storage.get('gfx_driver_packages', []))
|
||||
except Exception as err:
|
||||
archinstall.log(f"Could not handle nvidia and linuz-zen specific situations during xorg installation: {err}", level=logging.WARNING, fg="yellow")
|
||||
archinstall.storage['installation_session'].add_additional_packages("xorg-server xorg-xinit") # Prep didn't run, so there's no driver to install
|
||||
archinstall.storage['installation_session'].add_additional_packages("xorg-server", "xorg-xinit") # Prep didn't run, so there's no driver to install
|
||||
|
|
|
|||
Loading…
Reference in New Issue