Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/disk/device_model.py
diff options
context:
space:
mode:
Diffstat (limited to 'archinstall/lib/disk/device_model.py')
-rw-r--r--archinstall/lib/disk/device_model.py41
1 files changed, 31 insertions, 10 deletions
diff --git a/archinstall/lib/disk/device_model.py b/archinstall/lib/disk/device_model.py
index 36dd0c4f..8e72390c 100644
--- a/archinstall/lib/disk/device_model.py
+++ b/archinstall/lib/disk/device_model.py
@@ -137,6 +137,10 @@ class Unit(Enum):
Percent = '%' # size in percentile
+ @staticmethod
+ def get_all_units() -> List[str]:
+ return [u.name for u in Unit]
+
@dataclass
class Size:
@@ -214,16 +218,25 @@ class Size:
value = int(self._normalize() / target_unit.value) # type: ignore
return Size(value, target_unit)
+ def as_text(self) -> str:
+ return self.format_size(
+ self.unit,
+ self.sector_size
+ )
+
def format_size(
self,
target_unit: Unit,
- sector_size: Optional[Size] = None
+ sector_size: Optional[Size] = None,
+ include_unit: bool = True
) -> str:
if self.unit == Unit.Percent:
return f'{self.value}%'
else:
target_size = self.convert(target_unit, sector_size)
- return f'{target_size.value} {target_unit.name}'
+ if include_unit:
+ return f'{target_size.value} {target_unit.name}'
+ return f'{target_size.value}'
def _normalize(self) -> int:
"""
@@ -280,7 +293,7 @@ class _PartitionInfo:
mountpoints: List[Path]
btrfs_subvol_infos: List[_BtrfsSubvolumeInfo] = field(default_factory=list)
- def as_json(self) -> Dict[str, Any]:
+ def table_data(self) -> Dict[str, Any]:
part_info = {
'Name': self.name,
'Type': self.type.value,
@@ -343,7 +356,7 @@ class _DeviceInfo:
read_only: bool
dirty: bool
- def as_json(self) -> Dict[str, Any]:
+ def table_data(self) -> Dict[str, Any]:
total_free_space = sum([region.get_length(unit=Unit.MiB) for region in self.free_space_regions])
return {
'Model': self.model,
@@ -440,7 +453,7 @@ class SubvolumeModification:
'nodatacow': self.nodatacow
}
- def as_json(self) -> Dict[str, Any]:
+ def table_data(self) -> Dict[str, Any]:
return {
'name': str(self.name),
'mountpoint': str(self.mountpoint),
@@ -465,12 +478,20 @@ class DeviceGeometry:
def get_length(self, unit: Unit = Unit.sectors) -> int:
return self._geometry.getLength(unit.name)
- def as_json(self) -> Dict[str, Any]:
+ def table_data(self) -> Dict[str, Any]:
+ start = Size(self._geometry.start, Unit.sectors, self._sector_size)
+ end = Size(self._geometry.end, Unit.sectors, self._sector_size)
+ length = Size(self._geometry.getLength(), Unit.sectors, self._sector_size)
+
+ start_str = f'{self._geometry.start} / {start.format_size(Unit.B, include_unit=False)}'
+ end_str = f'{self._geometry.end} / {end.format_size(Unit.B, include_unit=False)}'
+ length_str = f'{self._geometry.getLength()} / {length.format_size(Unit.B, include_unit=False)}'
+
return {
'Sector size': self._sector_size.value,
- 'Start sector': self._geometry.start,
- 'End sector': self._geometry.end,
- 'Length': self._geometry.getLength()
+ 'Start (sector/B)': start_str,
+ 'End (sector/B)': end_str,
+ 'Length (sectors/B)': length_str
}
@@ -700,7 +721,7 @@ class PartitionModification:
'btrfs': [vol.__dump__() for vol in self.btrfs_subvols]
}
- def as_json(self) -> Dict[str, Any]:
+ def table_data(self) -> Dict[str, Any]:
"""
Called for displaying data in table format
"""