From 6bf78985414bc2b98705de43ef3aa42a6507e4bd Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Thu, 19 Jun 2025 21:02:14 +1000 Subject: [PATCH 1/3] Fix 3598 - Utilize script field from config when present --- archinstall/__init__.py | 8 +------- archinstall/lib/args.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index dd2bf8d3e8..1b30268a2f 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -81,13 +81,7 @@ def main() -> int: _log_sys_info() - if not arch_config_handler.args.offline: - _fetch_arch_db() - - if not arch_config_handler.args.skip_version_check: - _check_new_version() - - script = arch_config_handler.args.script + script = arch_config_handler.get_script() mod_name = f'archinstall.scripts.{script}' # by loading the module we'll automatically run the script diff --git a/archinstall/lib/args.py b/archinstall/lib/args.py index ee1a571466..42cec05d27 100644 --- a/archinstall/lib/args.py +++ b/archinstall/lib/args.py @@ -38,7 +38,7 @@ class Arguments: creds_decryption_key: str | None = None silent: bool = False dry_run: bool = False - script: str = 'guided' + script: str | None = None mountpoint: Path = Path('/mnt') skip_ntp: bool = False skip_wkd: bool = False @@ -54,6 +54,7 @@ class Arguments: @dataclass class ArchConfig: version: str | None = None + script: str | None = None locale_config: LocaleConfiguration | None = None archinstall_language: Language = field(default_factory=lambda: translation_handler.get_language_by_abbr('en')) disk_config: DiskLayoutConfiguration | None = None @@ -93,6 +94,7 @@ def unsafe_json(self) -> dict[str, Any]: def safe_json(self) -> dict[str, Any]: config: Any = { 'version': self.version, + 'script': self.script, 'archinstall-language': self.archinstall_language.json(), 'hostname': self.hostname, 'kernels': self.kernels, @@ -130,6 +132,9 @@ def from_config(cls, args_config: dict[str, Any]) -> 'ArchConfig': arch_config.locale_config = LocaleConfiguration.parse_arg(args_config) + if script := args_config.get('script', None): + arch_config.script = script + if archinstall_lang := args_config.get('archinstall-language', None): arch_config.archinstall_language = translation_handler.get_language_by_name(archinstall_lang) @@ -240,6 +245,15 @@ def config(self) -> ArchConfig: def args(self) -> Arguments: return self._args + def get_script(self) -> str: + if script := self.args.script: + return script + + if script := self.config.script: + return script + + return 'guided' + def print_help(self) -> None: self._parser.print_help() @@ -308,7 +322,6 @@ def _define_arguments(self) -> ArgumentParser: ) parser.add_argument( '--script', - default='guided', nargs='?', help='Script to run for installation', type=str, From 49a812ec1334f8d30e88992352e3a59397d2c670 Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Thu, 19 Jun 2025 21:04:32 +1000 Subject: [PATCH 2/3] Update --- archinstall/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index 1b30268a2f..d8069d96a8 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -81,6 +81,12 @@ def main() -> int: _log_sys_info() + if not arch_config_handler.args.offline: + _fetch_arch_db() + + if not arch_config_handler.args.skip_version_check: + _check_new_version() + script = arch_config_handler.get_script() mod_name = f'archinstall.scripts.{script}' From c3de44db99da5a34ce56c4233dd98f87a3138b76 Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Fri, 20 Jun 2025 15:28:54 +1000 Subject: [PATCH 3/3] Update --- tests/data/test_config.json | 1 + tests/test_args.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/data/test_config.json b/tests/data/test_config.json index 70c5c5c333..c55d3b0b68 100644 --- a/tests/data/test_config.json +++ b/tests/data/test_config.json @@ -1,5 +1,6 @@ { "archinstall-language": "English", + "script": "test_script", "audio_config": { "audio": "pipewire" }, diff --git a/tests/test_args.py b/tests/test_args.py index 772e4d00c6..163431eb4e 100644 --- a/tests/test_args.py +++ b/tests/test_args.py @@ -31,7 +31,7 @@ def test_default_args(monkeypatch: MonkeyPatch) -> None: creds_decryption_key=None, silent=False, dry_run=False, - script='guided', + script=None, mountpoint=Path('/mnt'), skip_ntp=False, skip_wkd=False, @@ -127,6 +127,7 @@ def test_config_file_parsing( assert arch_config == ArchConfig( version='3.0.2', + script='test_script', locale_config=LocaleConfiguration( kb_layout='us', sys_lang='en_US',