From 33b25236d21bd4f894488abf644d5d24f52f964e Mon Sep 17 00:00:00 2001 From: Kivi Kaitaniemi Date: Mon, 13 May 2024 19:31:47 +0300 Subject: [PATCH] When installing files create directories with the same owner as the file --- src/decman/__init__.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/decman/__init__.py b/src/decman/__init__.py index 79d2548..8badfe3 100644 --- a/src/decman/__init__.py +++ b/src/decman/__init__.py @@ -137,7 +137,20 @@ class File: variables = {} target_directory = os.path.dirname(target) - os.makedirs(target_directory, exist_ok=True) + + def create_missing_dirs(dirct: str, uid: typing.Optional[int], + gid: typing.Optional[int]): + if not os.path.isdir(dirct): + parent_dir = os.path.dirname(dirct) + if not os.path.isdir(parent_dir): + create_missing_dirs(parent_dir, uid, gid) + os.mkdir(dirct) + + if uid is not None: + assert gid is not None, "If uid is set, then gid is set." + os.chown(dirct, uid, gid) + + create_missing_dirs(target_directory, self.uid, self.gid) self._write_content(target, variables)