From 5329f7a5b0f1d70c69b7695629131845d540a5cd Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Sun, 28 Aug 2022 00:29:34 +0200 Subject: [PATCH] chroot.create_user(): add optional uid and non_unique parameter --- chroot/abstract.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/chroot/abstract.py b/chroot/abstract.py index 66621a6..12e542e 100644 --- a/chroot/abstract.py +++ b/chroot/abstract.py @@ -311,17 +311,21 @@ class Chroot(AbstractChroot): def create_user( self, - user='kupfer', - password='123456', - groups=['network', 'video', 'audio', 'optical', 'storage', 'input', 'scanner', 'games', 'lp', 'rfkill', 'wheel'], + user: str = 'kupfer', + password: Optional[str] = None, + groups: list[str] = ['network', 'video', 'audio', 'optical', 'storage', 'input', 'scanner', 'games', 'lp', 'rfkill', 'wheel'], + uid: Optional[int] = None, + non_unique: bool = False, ): user = user or 'kupfer' + uid_param = f'-u {uid}' if uid is not None else '' + unique_param = '--non-unique' if non_unique else '' install_script = f''' set -e if ! id -u "{user}" >/dev/null 2>&1; then - useradd -m {user} + useradd -m {unique_param} {uid_param} {user} fi - usermod -a -G {",".join(groups)} {user} + usermod -a -G {",".join(groups)} {unique_param} {uid_param} {user} chown {user}:{user} /home/{user} -R ''' if password: @@ -329,8 +333,9 @@ class Chroot(AbstractChroot): else: install_script += f'echo "Set user password:" && passwd {user}' result = self.run_cmd(install_script) + assert isinstance(result, subprocess.CompletedProcess) if result.returncode != 0: - raise Exception('Failed to setup user') + raise Exception(f'Failed to setup user {user} in self.name') def try_install_packages( self,