Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archinstall/__init__.py2
-rw-r--r--archinstall/lib/configuration.py64
-rw-r--r--examples/guided.py55
-rw-r--r--examples/only_hd.py51
-rw-r--r--profiles/xorg.py4
5 files changed, 78 insertions, 98 deletions
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__,
]