Added file exclusion filter for Flamenco.
A filter like "*.abc;*.mkv;*.mov" can be used to prevent certain files from being copied to the job storage directory. Requires a Blender that is bundled with BAM 1.1.7 or newer.
This commit is contained in:
@@ -300,6 +300,8 @@ class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
|
||||
outdir = Path(prefs.flamenco_job_file_path) / unique_dir
|
||||
outfile = outdir / filepath.name
|
||||
|
||||
exclusion_filter = prefs.flamenco_exclude_filter or None
|
||||
|
||||
try:
|
||||
outdir.mkdir(parents=True)
|
||||
except Exception as ex:
|
||||
@@ -309,7 +311,7 @@ class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
|
||||
return None, []
|
||||
|
||||
try:
|
||||
missing_sources = await bam_interface.bam_copy(filepath, outfile)
|
||||
missing_sources = await bam_interface.bam_copy(filepath, outfile, exclusion_filter)
|
||||
except bam_interface.CommandExecutionError as ex:
|
||||
self.log.exception('Unable to execute BAM pack')
|
||||
self.report({'ERROR'}, 'Unable to execute BAM pack: %s' % ex)
|
||||
|
@@ -14,7 +14,8 @@ class CommandExecutionError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
async def bam_copy(base_blendfile: Path, target_blendfile: Path) -> typing.List[Path]:
|
||||
async def bam_copy(base_blendfile: Path, target_blendfile: Path,
|
||||
exclusion_filter: str) -> typing.List[Path]:
|
||||
"""Uses BAM to copy the given file and dependencies to the target blendfile.
|
||||
|
||||
Due to the way blendfile_pack.py is programmed/structured, we cannot import it
|
||||
@@ -41,6 +42,9 @@ async def bam_copy(base_blendfile: Path, target_blendfile: Path) -> typing.List[
|
||||
'--mode', 'FILE',
|
||||
]
|
||||
|
||||
if exclusion_filter:
|
||||
args.extend(['--exclude', exclusion_filter])
|
||||
|
||||
cmd_to_log = ' '.join(shlex.quote(s) for s in args)
|
||||
log.info('Executing %s', cmd_to_log)
|
||||
|
||||
|
Reference in New Issue
Block a user