Skip to content

Commit

Permalink
fix: clean up target path upon storage in order to avoid merges of di…
Browse files Browse the repository at this point in the history
…rectories (#25)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced the storage process with a cleanup procedure, ensuring a
clean state before storing new data.
- **Improvements**
- Improved robustness by effectively managing both directory and file
scenarios during cleanup, preventing conflicts from residual data.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
  • Loading branch information
johanneskoester authored Aug 16, 2024
1 parent 0143cdd commit 5a9bd27
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions snakemake_storage_plugin_fs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,8 +206,15 @@ def retrieve_object(self):

def store_object(self):
# Ensure that the object is stored at the location specified by
# self.local_path().
self.query_path.parent.mkdir(exist_ok=True, parents=True)
# self.query_path.
if self.query_path.exists():
# Clean up the target path
if self.query_path.is_dir():
shutil.rmtree(self.query_path, ignore_errors=True)
else:
self.query_path.unlink(missing_ok=True)
else:
self.query_path.parent.mkdir(exist_ok=True, parents=True)
# We want to respect the permissions in the target folder, in particular the
# setgid bit. Hence, we use --no-p to avoid preserving of permissions from the
# source to the target.
Expand Down

0 comments on commit 5a9bd27

Please sign in to comment.