live-bootstrap/lib/target.py

62 lines
1.5 KiB
Python

#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2023 fosslinux <fosslinux@aussies.space>
# SPDX-License-Identifier: GPL-3.0-or-later
"""
Contains a class that represents a target directory
"""
import enum
import os
from lib.utils import mount, create_disk
class TargetType(enum.Enum):
"""Different types of target dirs we can have"""
NONE = 0
TMPFS = 1
class Target:
"""
Represents a target directory
"""
_disks = {}
_mountpoints = {}
def __init__(self, path="target"):
self.path = os.path.abspath(path)
self._type = TargetType.NONE
if not os.path.exists(self.path):
os.mkdir(self.path)
def tmpfs(self, size="8G"):
"""Mount a tmpfs"""
print(f"Mounting tmpfs on {self.path}")
mount("tmpfs", self.path, "tmpfs", f"size={size}")
self._type = TargetType.TMPFS
# pylint: disable=too-many-arguments
def add_disk(self,
name,
size="16G",
filesystem="ext4",
tabletype="msdos",
bootable=False,
mkfs_args=None):
"""Add a disk"""
disk_path = os.path.join(self.path, f"{name}.img")
create_disk(disk_path,
tabletype,
filesystem,
size,
bootable,
mkfs_args)
self._disks[name] = disk_path
def get_disk(self, name):
"""Get the path to a device of a disk"""
return self._disks.get(name)