2023-08-31 11:17:19 +00:00
|
|
|
import os
|
|
|
|
|
|
|
|
from ..settings import SETTINGS
|
2023-08-31 15:23:00 +00:00
|
|
|
from ._report import Report, ReportData
|
|
|
|
|
|
|
|
|
|
|
|
def _hwdata() -> list[ReportData]:
|
|
|
|
def get_path_statvfs(path: os.PathLike) -> dict[str, float]:
|
|
|
|
sv = os.statvfs(path)
|
|
|
|
return {
|
|
|
|
"free": sv.f_bavail,
|
|
|
|
"total": sv.f_blocks,
|
|
|
|
}
|
|
|
|
|
|
|
|
return sorted([
|
|
|
|
ReportData.from_free_total(
|
|
|
|
name=str(path),
|
|
|
|
**get_path_statvfs(path),
|
|
|
|
) for path in SETTINGS.disk.paths
|
|
|
|
], key=lambda d: d.value, reverse=True)
|
2023-08-31 11:17:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
def disk() -> Report | None:
|
|
|
|
if not SETTINGS.disk.enabled:
|
|
|
|
return None
|
|
|
|
|
2023-08-31 15:23:00 +00:00
|
|
|
data = _hwdata()
|
2023-08-31 11:17:19 +00:00
|
|
|
|
2023-08-31 15:23:00 +00:00
|
|
|
return Report.aggregate(
|
2023-08-31 11:17:19 +00:00
|
|
|
settings=SETTINGS.disk,
|
2023-08-31 15:23:00 +00:00
|
|
|
data=data,
|
2023-08-31 11:17:19 +00:00
|
|
|
)
|