mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 08:48:13 +00:00
Add raw args then validate for duplicate flags
This commit is contained in:
@@ -61,6 +61,11 @@ class BlenderRenderWorker(BaseRenderWorker):
|
|||||||
# all frames or single
|
# all frames or single
|
||||||
cmd.extend(['-a'] if self.render_all_frames else ['-f', str(self.frame_to_render)])
|
cmd.extend(['-a'] if self.render_all_frames else ['-f', str(self.frame_to_render)])
|
||||||
|
|
||||||
|
# Convert raw args from string if available
|
||||||
|
raw_args = self.get_raw_args()
|
||||||
|
if raw_args:
|
||||||
|
cmd.extend(raw_args)
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
|
|
||||||
def _parse_stdout(self, line):
|
def _parse_stdout(self, line):
|
||||||
|
|||||||
@@ -44,9 +44,9 @@ class FFMPEGRenderWorker(BaseRenderWorker):
|
|||||||
cmd.extend(['-vf', f"scale={self.args['x_resolution']}:{self.args['y_resolution']}"])
|
cmd.extend(['-vf', f"scale={self.args['x_resolution']}:{self.args['y_resolution']}"])
|
||||||
|
|
||||||
# Convert raw args from string if available
|
# Convert raw args from string if available
|
||||||
raw_args = self.args.get('raw', None)
|
raw_args = self.get_raw_args()
|
||||||
if raw_args:
|
if raw_args:
|
||||||
cmd.extend(raw_args.split(' '))
|
cmd.extend(raw_args)
|
||||||
|
|
||||||
# Close with output path
|
# Close with output path
|
||||||
cmd.append(self.output_path)
|
cmd.append(self.output_path)
|
||||||
|
|||||||
@@ -99,18 +99,22 @@ class BaseRenderWorker(object):
|
|||||||
|
|
||||||
def generate_subprocess(self):
|
def generate_subprocess(self):
|
||||||
# Convert raw args from string if available and catch conflicts
|
# Convert raw args from string if available and catch conflicts
|
||||||
cmd = self.generate_worker_subprocess()
|
generated_args = self.generate_worker_subprocess()
|
||||||
raw_args = self.args.get('raw', None)
|
generated_args_flags = [x for x in generated_args if x.startswith('-')]
|
||||||
if raw_args:
|
if len(generated_args_flags) != len(set(generated_args_flags)):
|
||||||
|
msg = "Cannot generate subprocess - Multiple arg conflicts detected"
|
||||||
|
logger.error(msg)
|
||||||
|
logger.debug(f"Generated args for subprocess: {generated_args}")
|
||||||
|
raise ValueError(msg)
|
||||||
|
return generated_args
|
||||||
|
|
||||||
|
def get_raw_args(self):
|
||||||
|
raw_args_string = self.args.get('raw', None)
|
||||||
|
raw_args = None
|
||||||
|
if raw_args_string:
|
||||||
import shlex
|
import shlex
|
||||||
args_split = shlex.split(raw_args)
|
raw_args = shlex.split(raw_args_string)
|
||||||
flags = [x for x in args_split if x.startswith('-')]
|
return raw_args
|
||||||
conflict = any(element in flags for element in args_split)
|
|
||||||
if conflict:
|
|
||||||
raise ValueError("Custom args conflicts set parameters")
|
|
||||||
else:
|
|
||||||
cmd.extend(args_split)
|
|
||||||
return cmd
|
|
||||||
|
|
||||||
def generate_worker_subprocess(self):
|
def generate_worker_subprocess(self):
|
||||||
raise NotImplementedError("generate_worker_subprocess not implemented")
|
raise NotImplementedError("generate_worker_subprocess not implemented")
|
||||||
|
|||||||
Reference in New Issue
Block a user