From 7cc878885a25e2307f6554cbebe62bbcd18620e7 Mon Sep 17 00:00:00 2001
From: "r.jaepel" <r.jaepel@fz-juelich.de>
Date: Mon, 29 Jan 2024 15:29:18 +0100
Subject: [PATCH] Refactor

---
 cadetrdm/cli_integration.py |  1 -
 cadetrdm/repositories.py    | 22 ++++++++++++++--------
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/cadetrdm/cli_integration.py b/cadetrdm/cli_integration.py
index e3b936e..5dec60e 100644
--- a/cadetrdm/cli_integration.py
+++ b/cadetrdm/cli_integration.py
@@ -1,4 +1,3 @@
-import shlex
 import subprocess
 
 import click
diff --git a/cadetrdm/repositories.py b/cadetrdm/repositories.py
index 1445a67..6fa2d92 100644
--- a/cadetrdm/repositories.py
+++ b/cadetrdm/repositories.py
@@ -779,24 +779,24 @@ class ProjectRepo(BaseRepo):
             "Python sys args": str(sys.argv),
             "Tags": ", ".join(self.tags),
         }
-        csv_header = "\t".join(meta_info_dict.keys())
-        csv_data = "\t".join([str(x) for x in meta_info_dict.values()])
+        tsv_header = "\t".join(meta_info_dict.keys())
+        tsv_data = "\t".join([str(x) for x in meta_info_dict.values()])
 
         with open(json_filepath, "w") as f:
             json.dump(meta_info_dict, f, indent=2)
 
         if not tsv_filepath.exists():
             with open(tsv_filepath, "w") as f:
-                f.write(csv_header + "\n")
-                # csv.writer(csv_header + "\n")
+                f.write(tsv_header + "\n")
+                # csv.writer(tsv_header + "\n")
 
         with open(tsv_filepath, "r") as f:
             existing_header = f.readline().replace("\n", "")
-            if existing_header != csv_header:
+            if existing_header != tsv_header:
                 raise ValueError("The used structure of the meta_dict doesn't match the header found in log.tsv")
 
         with open(tsv_filepath, "a") as f:
-            f.write(csv_data + "\n")
+            f.write(tsv_data + "\n")
 
         self.dump_package_list(logs_folderpath)
 
@@ -882,12 +882,12 @@ class ProjectRepo(BaseRepo):
             return file_path
 
         if branch_name is None and not os.path.exists(file_path):
-            branch_name_and_path = file_path.split("_cached")[-1]
+            branch_name_and_path = file_path.split("_cached/")[-1]
             if os.sep not in branch_name_and_path:
                 sep = "/"
             else:
                 sep = os.sep
-            branch_name, file_path = file_path.split(sep, maxsplit=1)
+            branch_name, file_path = branch_name_and_path.split(sep, maxsplit=1)
 
         if self.output_repo.exist_uncomitted_changes:
             self.output_repo.stash_all_changes()
@@ -1034,6 +1034,7 @@ class ProjectRepo(BaseRepo):
             commit_return = self.output_repo._git.commit("-m", message)
             self.copy_data_to_cache()
             self.update_output_master_logs()
+            self.copy_data_to_cache("master")
             print("\n" + commit_return + "\n")
         except git.exc.GitCommandError as e:
             self.output_repo.delete_active_branch_if_branch_is_empty()
@@ -1063,11 +1064,16 @@ class ProjectRepo(BaseRepo):
         try:
             yield new_branch_name
         except Exception as e:
+            self.capture_error(e)
             self.output_repo.delete_active_branch_if_branch_is_empty()
             raise e
         else:
             self.exit_context(message=results_commit_message)
 
+    def capture_error(self, error):
+        print(traceback.format_exc())
+        write_lines_to_file(self.output_path / "error.stack", traceback.format_exc())
+
 
 class OutputRepo(BaseRepo):
 
-- 
GitLab