Add option to copy source files for a submission.
[htsworkflow.git] / htsworkflow / submission / results.py
index 4f815ad43f716775803f0e3c593cba787e6ca9bc..50077523aca3970a517973adbd69f119f4f17e3d 100644 (file)
@@ -45,15 +45,20 @@ class ResultMap(MutableMapping):
                 lib_path = os.path.join(basepath, lib_path)
             self[lib_id] = lib_path
 
-    def make_tree_from(self, source_path, destpath = None):
+    def make_tree_from(self, source_path, destpath = None, link=True):
         """Create a tree using data files from source path.
         """
         if destpath is None:
             destpath = os.getcwd()
 
+        LOGGER.debug("Source_path: %s", source_path)
+        LOGGER.debug("Dest_path: %s", destpath)
         for lib_id in self.results_order:
-            abs_lib_path = os.path.abspath(self.results[lib_id])
-            lib_path = os.path.relpath(abs_lib_path, destpath)
+            lib_path = self.results[lib_id]
+            LOGGER.debug("lib_path: %s", lib_path)
+            if os.path.isabs(lib_path):
+                lib_path = os.path.relpath(lib_path, destpath)
+
             LOGGER.debug('lib_path: %s', lib_path)
             lib_destination = os.path.join(destpath, lib_path)
             if not os.path.exists(lib_destination):
@@ -71,7 +76,10 @@ class ResultMap(MutableMapping):
                     raise IOError(
                         "{0} does not exist".format(source_pathname))
                 if not os.path.exists(target_pathname):
-                    os.symlink(source_pathname, target_pathname)
+                    if link:
+                        os.symlink(source_pathname, target_pathname)
+                    else:
+                        os.copy(source_pathname, target_pathname)
                     LOGGER.info(
                         'LINK {0} to {1}'.format(source_pathname,
                                                  target_pathname))