Skip to content

Commit 91609c1

Browse files
authored
Fix circular bootloader dependency (#3686)
1 parent dd5a861 commit 91609c1

2 files changed

Lines changed: 11 additions & 13 deletions

File tree

archinstall/lib/args.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def safe_json(self) -> dict[str, Any]:
131131
return config
132132

133133
@classmethod
134-
def from_config(cls, args_config: dict[str, Any]) -> 'ArchConfig':
134+
def from_config(cls, args_config: dict[str, Any], args: Arguments) -> 'ArchConfig':
135135
arch_config = ArchConfig()
136136

137137
arch_config.locale_config = LocaleConfiguration.parse_arg(args_config)
@@ -178,7 +178,7 @@ def from_config(cls, args_config: dict[str, Any]) -> 'ArchConfig':
178178
arch_config.network_config = NetworkConfiguration.parse_arg(net_config)
179179

180180
if bootloader_config := args_config.get('bootloader', None):
181-
arch_config.bootloader = Bootloader.from_arg(bootloader_config)
181+
arch_config.bootloader = Bootloader.from_arg(bootloader_config, args.skip_boot)
182182

183183
if args_config.get('uki') and (arch_config.bootloader is None or not arch_config.bootloader.has_uki_support()):
184184
arch_config.uki = False
@@ -250,12 +250,13 @@ def from_config(cls, args_config: dict[str, Any]) -> 'ArchConfig':
250250
class ArchConfigHandler:
251251
def __init__(self) -> None:
252252
self._parser: ArgumentParser = self._define_arguments()
253-
self._args: Arguments = self._parse_args()
253+
args: Arguments = self._parse_args()
254+
self._args = args
254255

255256
config = self._parse_config()
256257

257258
try:
258-
self._config = ArchConfig.from_config(config)
259+
self._config = ArchConfig.from_config(config, args)
259260
except ValueError as err:
260261
warn(str(err))
261262
exit(1)

archinstall/lib/models/bootloader.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,6 @@ def has_uki_support(self) -> bool:
2424
def json(self) -> str:
2525
return self.value
2626

27-
@staticmethod
28-
def values() -> list[str]:
29-
from ..args import arch_config_handler
30-
31-
return [e.value for e in Bootloader if e != Bootloader.NO_BOOTLOADER or arch_config_handler.args.skip_boot is True]
32-
3327
@classmethod
3428
def get_default(cls) -> Bootloader:
3529
from ..args import arch_config_handler
@@ -42,12 +36,15 @@ def get_default(cls) -> Bootloader:
4236
return Bootloader.Grub
4337

4438
@classmethod
45-
def from_arg(cls, bootloader: str) -> Bootloader:
39+
def from_arg(cls, bootloader: str, skip_boot: bool) -> Bootloader:
4640
# to support old configuration files
4741
bootloader = bootloader.capitalize()
4842

49-
if bootloader not in cls.values():
50-
values = ', '.join(cls.values())
43+
bootloader_options = [e.value for e in Bootloader if e != Bootloader.NO_BOOTLOADER or skip_boot is True]
44+
45+
if bootloader not in bootloader_options:
46+
values = ', '.join(bootloader_options)
5147
warn(f'Invalid bootloader value "{bootloader}". Allowed values: {values}')
5248
sys.exit(1)
49+
5350
return Bootloader(bootloader)

0 commit comments

Comments
 (0)