Routine to properly print and save config data (#888)
* Created a standard function to show/save the config parameters * flake8 complains * Correct definition of btrfs standard layout * Solve issue #936 * Moved output_configs to lib/configuration.py
This commit is contained in:
parent
0ec9549dc4
commit
ec73bdab4c
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
@ -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'))
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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__,
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue