From 3ac139a2dc890deb2940e97e2f8538a1d4898044 Mon Sep 17 00:00:00 2001 From: Javanaut Date: Sun, 21 Jun 2026 12:03:37 +0200 Subject: [PATCH] Impl --yes flag --- src/ffx/cli.py | 12 ++++++++++++ tests/integration/test_cli_unmux.py | 2 +- tests/unit/test_cli_unmux_output_directory.py | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/ffx/cli.py b/src/ffx/cli.py index 5482c4c..74e28de 100755 --- a/src/ffx/cli.py +++ b/src/ffx/cli.py @@ -347,6 +347,10 @@ def ensureUnmuxOutputDirectory(context, outputDirectory): if context.get('dry_run', False): return False + if context.get('yes', False): + os.makedirs(resolvedOutputDirectory, exist_ok=True) + return True + if not confirmUnmuxOutputDirectoryCreation(resolvedOutputDirectory): raise click.ClickException("Unmux output directory creation aborted by user.") @@ -876,6 +880,12 @@ def getUnmuxSequence(trackDescriptor: TrackDescriptor, sourcePath, targetPrefix, @click.option('-l', '--label', type=str, default='', help='Label to be used as filename prefix') @click.option("-o", "--output-directory", type=str, default='', help=UNMUX_OUTPUT_DIRECTORY_OPTION_HELP) @click.option("-s", "--subtitles-only", is_flag=True, default=False) +@click.option( + "--yes", + is_flag=True, + default=False, + help="Create a missing unmux output directory without prompting.", +) @click.option( '--nice', type=int, @@ -897,6 +907,7 @@ def unmux(ctx, label, output_directory, subtitles_only, + yes, nice, cpu): from ffx.file_properties import FileProperties @@ -912,6 +923,7 @@ def unmux(ctx, ctx.obj['resource_limits']['niceness'] = nice ctx.obj['resource_limits']['cpu_limit'] = cpu ctx.obj['resource_limits']['cpu_percent'] = cpu + ctx.obj['yes'] = bool(yes) output_directory, requires_output_directory = resolveUnmuxOutputDirectory( ctx.obj, diff --git a/tests/integration/test_cli_unmux.py b/tests/integration/test_cli_unmux.py index 5717ee3..9729ef9 100644 --- a/tests/integration/test_cli_unmux.py +++ b/tests/integration/test_cli_unmux.py @@ -174,10 +174,10 @@ class UnmuxCliTests(unittest.TestCase): self.home_dir, self.database_path, "--subtitles-only", + "--yes", "--label", "dball", str(source_path), - input_text="y\n", ) self.assertCompleted(completed) diff --git a/tests/unit/test_cli_unmux_output_directory.py b/tests/unit/test_cli_unmux_output_directory.py index 9b97853..760f889 100644 --- a/tests/unit/test_cli_unmux_output_directory.py +++ b/tests/unit/test_cli_unmux_output_directory.py @@ -122,6 +122,20 @@ class UnmuxOutputDirectoryTests(unittest.TestCase): mocked_getchar.assert_called_once() mocked_confirm.assert_not_called() + def test_yes_creates_missing_output_directory_without_prompt(self): + with tempfile.TemporaryDirectory() as tempdir: + output_directory = Path(tempdir) / "missing" / "parents" / "manual" + + with patch("ffx.cli.click.confirm") as mocked_confirm: + created = cli.ensureUnmuxOutputDirectory( + {"dry_run": False, "yes": True}, + str(output_directory), + ) + + self.assertTrue(created) + self.assertTrue(output_directory.is_dir()) + mocked_confirm.assert_not_called() + def test_missing_output_directory_can_be_rejected(self): with tempfile.TemporaryDirectory() as tempdir: output_directory = Path(tempdir) / "missing" / "manual"