index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | archinstall/__init__.py | 2 | ||||
-rw-r--r-- | archinstall/lib/configuration.py | 64 | ||||
-rw-r--r-- | examples/guided.py | 55 | ||||
-rw-r--r-- | examples/only_hd.py | 51 | ||||
-rw-r--r-- | profiles/xorg.py | 4 |
diff --git a/archinstall/__init__.py b/archinstall/__init__.py index c06bb328..58e8af37 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -38,7 +38,7 @@ from .lib.menu import Menu from .lib.menu.selection_menu import GlobalMenu from .lib.translation import Translation from .lib.plugins import plugins, load_plugin # This initiates the plugin loading ceremony - +from .lib.configuration import * parser = ArgumentParser() __version__ = "2.4.0-dev0" diff --git a/archinstall/lib/configuration.py b/archinstall/lib/configuration.py new file mode 100644 index 00000000..bb8c7aab --- /dev/null +++ b/archinstall/lib/configuration.py @@ -0,0 +1,64 @@ +import json +import pathlib +import logging +from .storage import storage +from .general import JSON, UNSAFE_JSON +from .output import log + +def output_configs(area :dict, show :bool = True, save :bool = True): + """ Show on the screen the configuration data (except credentials) and/or save them on a json file + :param area: a dictionary to be shown/save (basically archinstall.arguments, but needed to be passed explictly to avoid circular references + :type area: dict + :param show:Determines if the config data will be displayed on screen in Json format + :type show: bool + :param save:Determines if the config data will we written as a Json file + :type save:bool + """ + user_credentials = {} + disk_layout = {} + user_config = {} + for key in area: + if key in ['!users','!superusers','!encryption-password']: + user_credentials[key] = area[key] + elif key == 'disk_layouts': + disk_layout = area[key] + elif key in ['abort','install','config','creds','dry_run']: + pass + else: + user_config[key] = area[key] + + user_configuration_json = json.dumps({ + 'config_version': storage['__version__'], # Tells us what version was used to generate the config + **user_config, # __version__ will be overwritten by old version definition found in config + 'version': storage['__version__'] + } , indent=4, sort_keys=True, cls=JSON) + if disk_layout: + disk_layout_json = json.dumps(disk_layout, indent=4, sort_keys=True, cls=JSON) + if user_credentials: + user_credentials_json = json.dumps(user_credentials, indent=4, sort_keys=True, cls=UNSAFE_JSON) + + if save: + dest_path = pathlib.Path(storage.get('LOG_PATH','.')) + if (not dest_path.exists()) or not (dest_path.is_dir()): + log(f"Destination directory {dest_path.resolve()} does not exist or is not a directory,\n Configuration files can't be saved",fg="yellow",) + input("Press enter to continue") + else: + with (dest_path / "user_configuration.json").open('w') as config_file: + config_file.write(user_configuration_json) + if user_credentials: + target = dest_path / "user_credentials.json" + with target.open('w') as config_file: + config_file.write(user_credentials_json) + if disk_layout: + target = dest_path / "user_disk_layout.json" + with target.open('w') as config_file: + config_file.write(disk_layout_json) + + if show: + print() + print('This is your chosen configuration:') + log("-- Guided template chosen (with below config) --", level=logging.DEBUG) + log(user_configuration_json, level=logging.INFO) + if disk_layout: + log(disk_layout_json, level=logging.INFO) + print() diff --git a/examples/guided.py b/examples/guided.py index e14e58cf..a775da84 100644 --- a/examples/guided.py +++ b/examples/guided.py @@ -1,4 +1,3 @@ -import json import logging import os import time @@ -91,52 +90,7 @@ def ask_user_questions(): global_menu.run() -def save_user_configurations(): - user_credentials = {} - if archinstall.arguments.get('!users'): - user_credentials["!users"] = archinstall.arguments['!users'] - if archinstall.arguments.get('!superusers'): - user_credentials["!superusers"] = archinstall.arguments['!superusers'] - if archinstall.arguments.get('!encryption-password'): - user_credentials["!encryption-password"] = archinstall.arguments['!encryption-password'] - - user_configuration = json.dumps({ - 'config_version': archinstall.__version__, # Tells us what version was used to generate the config - **archinstall.arguments, # __version__ will be overwritten by old version definition found in config - 'version': archinstall.__version__ - } , indent=4, sort_keys=True, cls=archinstall.JSON) - - with open("/var/log/archinstall/user_credentials.json", "w") as config_file: - config_file.write(json.dumps(user_credentials, indent=4, sort_keys=True, cls=archinstall.UNSAFE_JSON)) - - with open("/var/log/archinstall/user_configuration.json", "w") as config_file: - config_file.write(user_configuration) - - if archinstall.arguments.get('disk_layouts'): - user_disk_layout = json.dumps(archinstall.arguments['disk_layouts'], indent=4, sort_keys=True, cls=archinstall.JSON) - with open("/var/log/archinstall/user_disk_layout.json", "w") as disk_layout_file: - disk_layout_file.write(user_disk_layout) - def perform_filesystem_operations(): - print() - print('This is your chosen configuration:') - archinstall.log("-- Guided template chosen (with below config) --", level=logging.DEBUG) - - user_configuration = json.dumps({**archinstall.arguments, 'version' : archinstall.__version__} , indent=4, sort_keys=True, cls=archinstall.JSON) - archinstall.log(user_configuration, level=logging.INFO) - - if archinstall.arguments.get('disk_layouts'): - user_disk_layout = json.dumps(archinstall.arguments['disk_layouts'], indent=4, sort_keys=True, cls=archinstall.JSON) - archinstall.log(user_disk_layout, level=logging.INFO) - - print() - - if archinstall.arguments.get('dry_run'): - exit(0) - - if not archinstall.arguments.get('silent'): - input('Press Enter to continue.') - """ Issue a final warning before we continue with something un-revertable. We mention the drive one last time, and count from 5 to 0. @@ -300,6 +254,13 @@ if not archinstall.arguments.get('offline', False): if not archinstall.arguments.get('silent'): ask_user_questions() -save_user_configurations() +archinstall.output_configs(archinstall.arguments,show=False if archinstall.arguments.get('silent') else True) + +if archinstall.arguments.get('dry_run'): + exit(0) + +if not archinstall.arguments.get('silent'): + input('Press Enter to continue.') + perform_filesystem_operations() perform_installation(archinstall.storage.get('MOUNT_POINT', '/mnt')) diff --git a/examples/only_hd.py b/examples/only_hd.py index f1bddbb2..7195d810 100644 --- a/examples/only_hd.py +++ b/examples/only_hd.py @@ -1,4 +1,3 @@ -import json import logging import os import pathlib @@ -49,52 +48,6 @@ def ask_user_questions(): """ ask_harddrives() -def save_user_configurations(): - user_credentials = {} - if archinstall.arguments.get('!users'): - user_credentials["!users"] = archinstall.arguments['!users'] - if archinstall.arguments.get('!superusers'): - user_credentials["!superusers"] = archinstall.arguments['!superusers'] - if archinstall.arguments.get('!encryption-password'): - user_credentials["!encryption-password"] = archinstall.arguments['!encryption-password'] - - user_configuration = json.dumps({ - 'config_version': archinstall.__version__, # Tells us what version was used to generate the config - **archinstall.arguments, # __version__ will be overwritten by old version definition found in config - 'version': archinstall.__version__ - } , indent=4, sort_keys=True, cls=archinstall.JSON) - - with open("/var/log/archinstall/user_credentials.json", "w") as config_file: - config_file.write(json.dumps(user_credentials, indent=4, sort_keys=True, cls=archinstall.UNSAFE_JSON)) - - with open("/var/log/archinstall/user_configuration.json", "w") as config_file: - config_file.write(user_configuration) - - if archinstall.arguments.get('disk_layouts'): - user_disk_layout = json.dumps(archinstall.arguments['disk_layouts'], indent=4, sort_keys=True, cls=archinstall.JSON) - with open("/var/log/archinstall/user_disk_layout.json", "w") as disk_layout_file: - disk_layout_file.write(user_disk_layout) - - -def write_config_files(): - print() - print('This is your chosen configuration:') - archinstall.log("-- Guided template chosen (with below config) --", level=logging.DEBUG) - - user_configuration = json.dumps({**archinstall.arguments, 'version' : archinstall.__version__} , indent=4, sort_keys=True, cls=archinstall.JSON) - archinstall.log(user_configuration, level=logging.INFO) - - if archinstall.arguments.get('disk_layouts'): - user_disk_layout = json.dumps(archinstall.arguments['disk_layouts'], indent=4, sort_keys=True, cls=archinstall.JSON) - archinstall.log(user_disk_layout, level=logging.INFO) - - print() - - save_user_configurations() - if archinstall.arguments.get('dry_run'): - exit(0) - - def perform_disk_operations(): """ Issue a final warning before we continue with something un-revertable. @@ -170,9 +123,11 @@ if not archinstall.check_mirror_reachable(): if not archinstall.arguments.get('silent'): ask_user_questions() +archinstall.output_configs(archinstall.arguments,show=False if archinstall.arguments.get('silent') else True) +if archinstall.arguments.get('dry_run'): + exit(0) if not archinstall.arguments.get('silent'): - write_config_files() input('Press Enter to continue.') perform_disk_operations() diff --git a/profiles/xorg.py b/profiles/xorg.py index aa8b5248..e13b15d7 100644 --- a/profiles/xorg.py +++ b/profiles/xorg.py @@ -2,7 +2,7 @@ import archinstall import logging - +from archinstall.lib.hardware import __packages__ as __hwd__packages__ is_top_level_profile = True __description__ = 'Installs a minimal system as well as xorg and graphics drivers.' @@ -12,7 +12,7 @@ __packages__ = [ 'xorg-server', 'xorg-xinit', 'nvidia-dkms', - *archinstall.lib.hardware.__packages__, + *__hwd__packages__, ] |