|
|
@@ -67,7 +67,7 @@ class DirectoryStorage(Storage): |
|
|
|
shutil.move(filename, self._directory) |
|
|
|
if not metadata: |
|
|
|
return |
|
|
|
metadataFilename = os.path.join(self._directory, f'{filename}.codearchiver-metadata') |
|
|
|
metadataFilename = os.path.join(self._directory, f'{filename}_codearchiver_metadata.txt') |
|
|
|
# No need to check for existence here thanks to the 'x' mode |
|
|
|
_logger.info(f'Writing metadata for {filename} to {metadataFilename}') |
|
|
|
with open(metadataFilename, 'x') as fp: |
|
|
@@ -78,7 +78,7 @@ class DirectoryStorage(Storage): |
|
|
|
# Replace this with `root_dir` when dropping Python 3.9 support |
|
|
|
escapedDirPrefix = os.path.join(glob.escape(self._directory), '') |
|
|
|
escapedDirPrefixLen = len(escapedDirPrefix) |
|
|
|
files = glob.glob(f'{escapedDirPrefix}*.codearchiver-metadata') |
|
|
|
files = glob.glob(f'{escapedDirPrefix}*_codearchiver_metadata.txt') |
|
|
|
files.sort() |
|
|
|
for metadataFilename in files: |
|
|
|
metadataFilename = metadataFilename[escapedDirPrefixLen:] |
|
|
@@ -87,12 +87,12 @@ class DirectoryStorage(Storage): |
|
|
|
idx = codearchiver.core.Metadata.deserialise(fp, validate = False) |
|
|
|
if idx.matches(criteria): |
|
|
|
_logger.info(f'Found metadata match {metadataFilename}') |
|
|
|
yield metadataFilename.rsplit('.', 1)[0] |
|
|
|
yield metadataFilename.rsplit('_', 2)[0] |
|
|
|
_logger.info('Done searching metadata') |
|
|
|
|
|
|
|
@contextlib.contextmanager |
|
|
|
def open_metadata(self, filename): |
|
|
|
with self.open(f'{filename}.codearchiver-metadata', 'r') as fp: |
|
|
|
with self.open(f'{filename}_codearchiver_metadata.txt', 'r') as fp: |
|
|
|
yield fp |
|
|
|
|
|
|
|
@contextlib.contextmanager |
|
|
|