Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/__init__.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton@hvornum.se>2022-08-11 18:06:02 +0200
committerGitHub <noreply@github.com>2022-08-11 18:06:02 +0200
commit1086fd686d28317851c7f09eb00898648ecaaad7 (patch)
treec77ea08dafb956969296e2ffaa0b2913a926d0cc /archinstall/__init__.py
parent397cceca90592ec39a594cd8fa5215b64d7238ae (diff)
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.
Diffstat (limited to 'archinstall/__init__.py')
-rw-r--r--archinstall/__init__.py30
1 files changed, 25 insertions, 5 deletions
diff --git a/archinstall/__init__.py b/archinstall/__init__.py
index 3e9f8391..090ad7de 100644
--- a/archinstall/__init__.py
+++ b/archinstall/__init__.py
@@ -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: