diff --git a/codearchiver/storage.py b/codearchiver/storage.py index ee56afd..bd7641c 100644 --- a/codearchiver/storage.py +++ b/codearchiver/storage.py @@ -45,11 +45,15 @@ class DirectoryStorage(Storage): def put(self, filename, index = None): self._ensure_directory() + #FIXME: Race condition + if os.path.exists((targetFilename := os.path.join(self._directory, os.path.basename(filename)))): + raise FileExistsError(f'{targetFilename} already exists') _logger.info(f'Moving {filename} to {self._directory}') shutil.move(filename, self._directory) if not index: return indexFilename = os.path.join(self._directory, f'{filename}.codearchiver-index') + # No need to check for existence here thanks to the 'x' mode _logger.info(f'Writing index for {filename} to {indexFilename}') with open(indexFilename, 'x') as fp: fp.write(index.serialise())