From 0d691fc487e561de93033d4e537f42a4e4c91a13 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 1 Nov 2021 10:42:04 +0000 Subject: Added a wrapper to create files inside the installation as/for a specified used --- archinstall/lib/installer.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 0bdddb2e..bf892826 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -14,6 +14,18 @@ from .exceptions import DiskError, ServiceException __packages__ = ["base", "base-devel", "linux-firmware", "linux", "linux-lts", "linux-zen", "linux-hardened"] +class InstallationFile: + def __init__(self, installation, filename, owner): + self.installation = installation + self.filename = filename + self.owner = owner + + def __enter__(self): + return self + + def __exit__(self): + self.installation.chown(owner, self.filename) + class Installer: """ `Installer()` is the wrapper for most basic installation steps. @@ -623,6 +635,12 @@ class Installer: o = b''.join(SysCommand(f"/usr/bin/arch-chroot {self.target} sh -c \"chsh -s {shell} {user}\"")) pass + def chown(self, owner, path, options=[]): + return SysCommand(f"/usr/bin/arch-chroot {self.target} sh -c 'chown {' '.join(options)} {owner} {path}") + + def create_file(self, filename, owner=None): + return InstallationFile(self, filename, owner) + def set_keyboard_language(self, language: str) -> bool: if len(language.strip()): if not verify_keyboard_layout(language): -- cgit v1.2.3-70-g09d2