diff --git a/docs/configuration.rst b/docs/configuration.rst index 2dd79b09..96843207 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -8018,6 +8018,17 @@ Description to have it call ``setsid()``. +exec.verbose +------------ +Type + ``bool`` +Default + ``true`` +Description + Include `command `__ + arguments in logging messages. + + hash.chunk-size --------------- Type diff --git a/gallery_dl/postprocessor/exec.py b/gallery_dl/postprocessor/exec.py index 3b0ab22a..9e2e4df4 100644 --- a/gallery_dl/postprocessor/exec.py +++ b/gallery_dl/postprocessor/exec.py @@ -22,6 +22,10 @@ else: from shlex import quote +def trim(args): + return (args.partition(" ") if isinstance(args, str) else args)[0] + + class ExecPP(PostProcessor): def __init__(self, job, options): @@ -35,6 +39,7 @@ class ExecPP(PostProcessor): if options.get("async", False): self._exec = self._popen + self.verbose = options.get("verbose", True) self.session = False self.creationflags = 0 if options.get("session"): @@ -115,11 +120,11 @@ class ExecPP(PostProcessor): def _exec(self, args, shell): if retcode := self._popen(args, shell).wait(): self.log.warning("'%s' returned with non-zero exit status (%d)", - args, retcode) + args if self.verbose else trim(args), retcode) return retcode def _popen(self, args, shell): - self.log.debug("Running '%s'", args) + self.log.debug("Running '%s'", args if self.verbose else trim(args)) return util.Popen( args, shell=shell, diff --git a/test/test_postprocessor.py b/test/test_postprocessor.py index ac107f71..87865721 100644 --- a/test/test_postprocessor.py +++ b/test/test_postprocessor.py @@ -374,6 +374,40 @@ class ExecTest(BasePostprocessorTest): m_aa.assert_called_once_with(self.pathfmt.kwdict) m_ac.assert_called_once() + def test_verbose_string(self): + self._create({ + "command": "echo foo bar", + "verbose": False, + }) + + with patch("gallery_dl.util.Popen") as p, \ + self.assertLogs(level=10) as log_info: + i = Mock() + i.wait.return_value = 123 + p.return_value = i + self._trigger(("after",)) + + msg = "DEBUG:postprocessor.exec:Running 'echo'" + self.assertEqual(log_info.output[0], msg) + self.assertIn("'echo' returned with non-zero ", log_info.output[1]) + + def test_verbose_list(self): + self._create({ + "command": ["echo", "foo", "bar"], + "verbose": False, + }) + + with patch("gallery_dl.util.Popen") as p, \ + self.assertLogs(level=10) as log_info: + i = Mock() + i.wait.return_value = 123 + p.return_value = i + self._trigger(("after",)) + + msg = "DEBUG:postprocessor.exec:Running 'echo'" + self.assertEqual(log_info.output[0], msg) + self.assertIn("'echo' returned with non-zero ", log_info.output[1]) + class HashTest(BasePostprocessorTest):