From 901de63fb934e7fffebda2bf6dfd250b7a85ff35 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Mon, 14 Jun 2021 17:37:05 +0200 Subject: [PATCH] util/path: add path checker helper function Checks if one path is a child of a second one. Useful for checking if paths defined in a manifest exist inside the tree. Optionally checks if the target path exists. --- osbuild/util/path.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 osbuild/util/path.py diff --git a/osbuild/util/path.py b/osbuild/util/path.py new file mode 100644 index 00000000..b25d29cc --- /dev/null +++ b/osbuild/util/path.py @@ -0,0 +1,14 @@ +"""Path handling utility functions""" +import os.path + +from .types import PathLike + + +def in_tree(path: PathLike, tree: PathLike, must_exist=False) -> bool: + """Return whether the canonical location of 'path' is under 'tree'. + If 'must_exist' is True, the file must also exist for the check to succeed. + """ + path = os.path.abspath(path) + if path.startswith(tree): + return not must_exist or os.path.exists(path) + return False