39 lines
1006 B
Python
39 lines
1006 B
Python
|
|
"""Shared path derivation for encrypted storage setups."""
|
||
|
|
|
||
|
|
from dataclasses import dataclass
|
||
|
|
|
||
|
|
from lim import device as device_module
|
||
|
|
from lim import ui
|
||
|
|
from lim.device import Device
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass(frozen=True)
|
||
|
|
class StorageTarget:
|
||
|
|
"""An encrypted drive plus all derived mapper/mount/partition paths."""
|
||
|
|
|
||
|
|
device: Device
|
||
|
|
|
||
|
|
@property
|
||
|
|
def mapper_name(self) -> str:
|
||
|
|
return f"encrypteddrive-{self.device.name}"
|
||
|
|
|
||
|
|
@property
|
||
|
|
def mapper_path(self) -> str:
|
||
|
|
return f"/dev/mapper/{self.mapper_name}"
|
||
|
|
|
||
|
|
@property
|
||
|
|
def mount_path(self) -> str:
|
||
|
|
return f"/media/{self.mapper_name}"
|
||
|
|
|
||
|
|
@property
|
||
|
|
def partition_path(self) -> str:
|
||
|
|
return self.device.partition(1)
|
||
|
|
|
||
|
|
|
||
|
|
def select_storage_target() -> StorageTarget:
|
||
|
|
target = StorageTarget(device_module.select_device())
|
||
|
|
ui.info(f"mapper name set to : {target.mapper_name}")
|
||
|
|
ui.info(f"mapper path set to : {target.mapper_path}")
|
||
|
|
ui.info(f"mount path set to : {target.mount_path}")
|
||
|
|
return target
|