From 5303ec39f6f08ccf06f56ff6d5166fc572b2c735 Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Sat, 26 Jun 2021 09:17:52 +0200
Subject: vyos.util: add new helper copy_file()

Copy a file from A -> B but also support adjusting Bs file permissions
and creation of Bs base directory if required.
---
 python/vyos/util.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

(limited to 'python')

diff --git a/python/vyos/util.py b/python/vyos/util.py
index 7fea6cdc6..c318d58de 100644
--- a/python/vyos/util.py
+++ b/python/vyos/util.py
@@ -221,6 +221,19 @@ def write_file(fname, data, defaultonfailure=None, user=None, group=None):
             return defaultonfailure
         raise e
 
+def copy_file(source, destination, mkdstdir=False, user=None, group=None):
+    """
+    Copy file from source to destination. Can optionally create the destination
+    dir if it does not exist. Can optionally change the dir and file ownership.
+    """
+    import shutil
+    if mkdstdir:
+        dirname = os.path.dirname(destination)
+        if not os.path.isdir(dirname):
+            makedir(dirname, user, group)
+
+    shutil.copyfile(source, destination)
+    chown(destination, user, group)
 
 def read_json(fname, defaultonfailure=None):
     """
-- 
cgit v1.2.3