install: make Step a String enum

This commit is contained in:
Jörg Thalheim
2025-08-29 17:45:16 +02:00
parent 1a766a3447
commit c34a21a3bb

View File

@@ -1,6 +1,7 @@
import logging import logging
import os import os
from dataclasses import dataclass from dataclasses import dataclass
from enum import Enum
from pathlib import Path from pathlib import Path
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from time import time from time import time
@@ -25,14 +26,13 @@ log = logging.getLogger(__name__)
BuildOn = Literal["auto", "local", "remote"] BuildOn = Literal["auto", "local", "remote"]
Step = Literal[ class Step(str, Enum):
"generators", GENERATORS = "generators"
"upload-secrets", UPLOAD_SECRETS = "upload-secrets"
"nixos-anywhere", NIXOS_ANYWHERE = "nixos-anywhere"
"formatting", FORMATTING = "formatting"
"rebooting", REBOOTING = "rebooting"
"installing", INSTALLING = "installing"
]
def notify_install_step(current: Step) -> None: def notify_install_step(current: Step) -> None:
@@ -93,7 +93,7 @@ def run_machine_install(opts: InstallOptions, target_host: Remote) -> None:
) )
# Notify the UI about what we are doing # Notify the UI about what we are doing
notify_install_step("generators") notify_install_step(Step.GENERATORS)
generate_facts([machine]) generate_facts([machine])
run_generators([machine], generators=None, full_closure=False) run_generators([machine], generators=None, full_closure=False)
@@ -106,7 +106,7 @@ def run_machine_install(opts: InstallOptions, target_host: Remote) -> None:
upload_dir.mkdir(parents=True) upload_dir.mkdir(parents=True)
# Notify the UI about what we are doing # Notify the UI about what we are doing
notify_install_step("upload-secrets") notify_install_step(Step.UPLOAD_SECRETS)
machine.secret_facts_store.upload(upload_dir) machine.secret_facts_store.upload(upload_dir)
machine.secret_vars_store.populate_dir( machine.secret_vars_store.populate_dir(
machine.name, machine.name,
@@ -215,14 +215,14 @@ def run_machine_install(opts: InstallOptions, target_host: Remote) -> None:
) )
install_steps = { install_steps = {
"kexec": "nixos-anywhere", "kexec": Step.NIXOS_ANYWHERE,
"disko": "formatting", "disko": Step.FORMATTING,
"install": "installing", "install": Step.INSTALLING,
"reboot": "rebooting", "reboot": Step.REBOOTING,
} }
def run_phase(phase: str) -> None: def run_phase(phase: str) -> None:
notification = install_steps.get(phase, "nixos-anywhere") notification = install_steps.get(phase, Step.NIXOS_ANYWHERE)
notify_install_step(notification) notify_install_step(notification)
run( run(
[*cmd, "--phases", phase], [*cmd, "--phases", phase],