Merge pull request 'flash: Replace disks[str,str] with list[Disk] type' (#2100) from Qubasa/clan-core:Qubasa-main into main

This commit is contained in:
clan-bot
2024-09-15 09:50:18 +00:00
2 changed files with 30 additions and 13 deletions

View File

@@ -140,12 +140,18 @@ def list_possible_languages() -> list[str]:
return languages return languages
@dataclass
class Disk:
name: str
device: str
@API.register @API.register
def flash_machine( def flash_machine(
machine: Machine, machine: Machine,
*, *,
mode: str, mode: str,
disks: dict[str, str], disks: list[Disk],
system_config: SystemConfig, system_config: SystemConfig,
dry_run: bool, dry_run: bool,
write_efi_boot_entries: bool, write_efi_boot_entries: bool,
@@ -153,7 +159,7 @@ def flash_machine(
no_udev: bool = False, no_udev: bool = False,
extra_args: list[str] | None = None, extra_args: list[str] | None = None,
) -> None: ) -> None:
devices = [Path(device) for device in disks.values()] devices = [Path(disk.device) for disk in disks]
with pause_automounting(devices, no_udev): with pause_automounting(devices, no_udev):
if extra_args is None: if extra_args is None:
extra_args = [] extra_args = []
@@ -226,8 +232,8 @@ def flash_machine(
disko_install.append("--dry-run") disko_install.append("--dry-run")
if debug: if debug:
disko_install.append("--debug") disko_install.append("--debug")
for name, device in disks.items(): for disk in disks:
disko_install.extend(["--disk", name, device]) disko_install.extend(["--disk", disk.name, disk.device])
disko_install.extend(["--extra-files", str(local_dir), upload_dir]) disko_install.extend(["--extra-files", str(local_dir), upload_dir])
disko_install.extend(["--flake", str(machine.flake) + "#" + machine.name]) disko_install.extend(["--flake", str(machine.flake) + "#" + machine.name])
@@ -252,7 +258,7 @@ def flash_machine(
class FlashOptions: class FlashOptions:
flake: FlakeId flake: FlakeId
machine: str machine: str
disks: dict[str, str] disks: list[Disk]
dry_run: bool dry_run: bool
confirm: bool confirm: bool
debug: bool debug: bool
@@ -271,12 +277,23 @@ class AppendDiskAction(argparse.Action):
self, self,
parser: argparse.ArgumentParser, parser: argparse.ArgumentParser,
namespace: argparse.Namespace, namespace: argparse.Namespace,
values: str | Sequence[str] | None, values: str | Sequence[str] | None, # Updated type hint
option_string: str | None = None, option_string: str | None = None,
) -> None: ) -> None:
disks = getattr(namespace, self.dest) # Ensure 'values' is a sequence of two elements
assert isinstance(values, list), "values must be a list" if not (
disks[values[0]] = values[1] isinstance(values, Sequence)
and not isinstance(values, str)
and len(values) == 2
):
msg = "Two values must be provided for a 'disk'"
raise ValueError(msg)
# Use the same logic as before, ensuring 'values' is a sequence
current_disks: list[Disk] = getattr(namespace, self.dest, [])
disk_name, disk_device = values
current_disks.append(Disk(name=disk_name, device=disk_device))
setattr(namespace, self.dest, current_disks)
def flash_command(args: argparse.Namespace) -> None: def flash_command(args: argparse.Namespace) -> None:
@@ -317,7 +334,7 @@ def flash_command(args: argparse.Namespace) -> None:
machine = Machine(opts.machine, flake=opts.flake) machine = Machine(opts.machine, flake=opts.flake)
if opts.confirm and not opts.dry_run: if opts.confirm and not opts.dry_run:
disk_str = ", ".join(f"{name}={device}" for name, device in opts.disks.items()) disk_str = ", ".join(f"{disk.name}={disk.device}" for disk in opts.disks)
msg = f"Install {machine.name}" msg = f"Install {machine.name}"
if disk_str != "": if disk_str != "":
msg += f" to {disk_str}" msg += f" to {disk_str}"
@@ -351,10 +368,10 @@ def register_parser(parser: argparse.ArgumentParser) -> None:
"--disk", "--disk",
type=str, type=str,
nargs=2, nargs=2,
metavar=("name", "value"), metavar=("name", "device"),
action=AppendDiskAction, action=AppendDiskAction,
help="device to flash to", help="device to flash to",
default={}, default=[],
) )
mode_help = textwrap.dedent( mode_help = textwrap.dedent(
"""\ """\

View File

@@ -150,7 +150,7 @@ export const Flash = () => {
}, },
}, },
mode: "format", mode: "format",
disks: { main: values.disk }, disks: [{ name: "main", device: values.disk }],
system_config: { system_config: {
language: values.language, language: values.language,
keymap: values.keymap, keymap: values.keymap,