Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion archinstall/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def main() -> int:
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
Expand Down
17 changes: 15 additions & 2 deletions archinstall/lib/args.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -244,6 +249,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()

Expand Down Expand Up @@ -312,7 +326,6 @@ def _define_arguments(self) -> ArgumentParser:
)
parser.add_argument(
'--script',
default='guided',
nargs='?',
help='Script to run for installation',
type=str,
Expand Down
1 change: 1 addition & 0 deletions tests/data/test_config.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"archinstall-language": "English",
"script": "test_script",
"app_config": {
"bluetooth_config": {
"enabled": true
Expand Down
3 changes: 2 additions & 1 deletion tests/test_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -127,6 +127,7 @@ def test_config_file_parsing(

assert arch_config == ArchConfig(
version='3.0.2',
script='test_script',
app_config=ApplicationConfiguration(
bluetooth_config=BluetoothConfiguration(enabled=True),
audio_config=AudioConfiguration(audio=Audio.PIPEWIRE),
Expand Down