]> git.ipfire.org Git - people/jschlag/pbs.git/blobdiff - src/buildservice/packages.py
Redesign mastering repositories
[people/jschlag/pbs.git] / src / buildservice / packages.py
index 266383b1f8d0cc04f1a3d1b3b91c3368c38155cb..b13061662e9d9444ab21d0cdd662c7888c07fa93 100644 (file)
@@ -12,6 +12,9 @@ from . import base
 from . import database
 from . import misc
 
+log = logging.getLogger("packages")
+log.propagate = 1
+
 from .constants import *
 from .decorators import *
 
@@ -374,6 +377,10 @@ class Package(base.DataObject):
        def path(self):
                return self.data.path
 
+       @property
+       def filename(self):
+               return os.path.basename(self.path)
+
        @property
        def hash_sha512(self):
                return self.data.hash_sha512
@@ -382,6 +389,19 @@ class Package(base.DataObject):
        def filesize(self):
                return self.data.filesize
 
+       def copy(self, dst):
+               if os.path.isdir(dst):
+                       dst = os.path.join(dst, self.filename)
+
+               if os.path.exists(dst):
+                       raise IOError("Destination file exists: %s" % dst)
+
+               src = os.path.join(PACKAGES_DIR, self.path)
+
+               log.debug("Copying %s to %s" % (src, dst))
+
+               shutil.copy2(src, dst)
+
        def move(self, target_dir):
                # Create directory if it does not exist, yet.
                if not os.path.exists(target_dir):