[path] implement conditional 'part-directory' (#8329)

This commit is contained in:
Mike Fährmann
2025-12-03 11:19:44 +01:00
parent c6b2041c43
commit 4e2987e007
3 changed files with 38 additions and 9 deletions

View File

@@ -31,8 +31,15 @@ class DownloaderBase():
self.partdir = self.config("part-directory")
if self.partdir:
self.partdir = util.expand_path(self.partdir)
os.makedirs(self.partdir, exist_ok=True)
if isinstance(self.partdir, dict):
self.partdir = [
(util.compile_filter(expr) if expr else util.true,
util.expand_path(pdir))
for expr, pdir in self.partdir.items()
]
else:
self.partdir = util.expand_path(self.partdir)
os.makedirs(self.partdir, exist_ok=True)
proxies = self.config("proxy", util.SENTINEL)
if proxies is util.SENTINEL:

View File

@@ -325,7 +325,15 @@ class PathFormat():
self.kwdict["extension"] = self.prefix + self.extension_map(
"part", "part")
self.build_path()
if part_directory:
if part_directory is not None:
if isinstance(part_directory, list):
for condition, part_directory in part_directory:
if condition(self.kwdict):
break
else:
return
self.temppath = os.path.join(
part_directory,
os.path.basename(self.temppath),