archinstall_adapter: pass --config/--creds via synthetic sys.argv (env vars don't work)
ArchConfigHandler reads --config and --creds from sys.argv via argparse at construction time; it ignores ARCHINSTALL_CONFIG/ARCHINSTALL_CREDS env vars (confirmed in archinstall 4.3 lib/args.py:_parse_args). Setting those env vars was a no-op, so handler.config.disk_config was always None when the wrapper stripped our args off the real argv. Fix: build a synthetic argv [prog, --config <path>, --creds <path>] and swap it into sys.argv just for the ArchConfigHandler() call, then restore. Drops the unused 'import os' now that the env var lines are gone.
This commit is contained in:
1 file changed
+20
-6
@@ -35,7 +35,6 @@ correctly, on its first install.
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import os
|
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Iterator
|
from typing import Iterator
|
||||||
@@ -54,11 +53,26 @@ from archinstall.lib.models.users import User
|
|||||||
|
|
||||||
|
|
||||||
def load_arch_config(config_path: Path, creds_path: Path) -> ArchConfigHandler:
|
def load_arch_config(config_path: Path, creds_path: Path) -> ArchConfigHandler:
|
||||||
"""Build an ArchConfigHandler from on-disk JSON. archinstall reads the
|
"""Build an ArchConfigHandler from on-disk JSON.
|
||||||
paths via env vars, so we set them before instantiating the handler."""
|
|
||||||
os.environ["ARCHINSTALL_CONFIG"] = str(config_path)
|
archinstall's ArchConfigHandler reads --config / --creds from sys.argv
|
||||||
os.environ["ARCHINSTALL_CREDS"] = str(creds_path)
|
via argparse at construction time (lib/args.py:_parse_args). It does
|
||||||
return ArchConfigHandler()
|
NOT consult env vars for these paths. We can't pass them on our real
|
||||||
|
argv because the wrapper strips them before exec'ing Python (so other
|
||||||
|
archinstall arg-parsing code doesn't choke on our flags), so we hand
|
||||||
|
archinstall a synthetic argv just for this call.
|
||||||
|
"""
|
||||||
|
import sys
|
||||||
|
saved_argv = sys.argv
|
||||||
|
sys.argv = [
|
||||||
|
saved_argv[0] if saved_argv else "omarchy-install",
|
||||||
|
"--config", str(config_path),
|
||||||
|
"--creds", str(creds_path),
|
||||||
|
]
|
||||||
|
try:
|
||||||
|
return ArchConfigHandler()
|
||||||
|
finally:
|
||||||
|
sys.argv = saved_argv
|
||||||
|
|
||||||
|
|
||||||
def make_mirror_handler(offline: bool = True) -> MirrorListHandler:
|
def make_mirror_handler(offline: bool = True) -> MirrorListHandler:
|
||||||
|
|||||||
Reference in new issue
Block a user