Skip to content

Commit 777891b

Browse files
committed
fix nested directory creation
1 parent 0fd924d commit 777891b

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/aiida/tools/archive/create.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,12 @@ def querybuilder():
188188
}
189189

190190
# Handle temporary directory configuration
191+
tmp_prefix = '.aiida-export-'
191192
if tmp_dir is not None:
192193
tmp_dir = Path(tmp_dir)
193194
if not tmp_dir.exists():
194-
msg = f"Specified temporary directory '{tmp_dir}' does not exist"
195-
raise ArchiveExportError(msg)
195+
EXPORT_LOGGER.warning(f"Specified temporary directory '{tmp_dir}' doesn't exist. Creating it.")
196+
tmp_dir.mkdir(parents=False)
196197
if not tmp_dir.is_dir():
197198
msg = f"Specified temporary directory '{tmp_dir}' is not a directory"
198199
raise ArchiveExportError(msg)
@@ -201,11 +202,10 @@ def querybuilder():
201202
if not os.access(tmp_dir, os.W_OK | os.X_OK):
202203
msg = f"Specified temporary directory '{tmp_dir}' is not writable"
203204
raise ArchiveExportError(msg)
204-
tmp_prefix = None # Use default tempfile prefix
205+
205206
else:
206207
# Create temporary directory in the same folder as the output file
207208
tmp_dir = filename.parent
208-
tmp_prefix = '.aiida-export-'
209209

210210
initial_summary = get_init_summary(
211211
archive_version=archive_format.latest_version,
@@ -311,7 +311,9 @@ def querybuilder():
311311
# Create and open the archive for writing.
312312
# We create in a temp dir then move to final place at end,
313313
# so that the user cannot end up with a half written archive on errors
314+
314315
try:
316+
tmp_dir.mkdir(parents=True, exist_ok=True)
315317
with tempfile.TemporaryDirectory(dir=tmp_dir, prefix=tmp_prefix) as tmpdir:
316318
tmp_filename = Path(tmpdir) / 'export.zip'
317319
with archive_format.open(tmp_filename, mode='x', compression=compression) as writer:
@@ -408,7 +410,9 @@ def transform(d):
408410
f'Consider using --tmp-dir to specify a location with more available space.'
409411
)
410412
raise ArchiveExportError(msg) from e
411-
raise ArchiveExportError(f'Failed to create temporary directory: {e}') from e
413+
414+
msg = f'Failed to create temporary directory: {e}'
415+
raise ArchiveExportError(msg) from e
412416

413417
EXPORT_LOGGER.report('Archive created successfully')
414418

0 commit comments

Comments
 (0)