From a6b8d3d06aab1a1f3a6caf457de812b8ad4cc5c0 Mon Sep 17 00:00:00 2001 From: mikkel Date: Sun, 7 Sep 2025 12:45:38 -0600 Subject: [PATCH] Allow --apply after file arguments --- gptdiff/gptdiff.py | 7 ++++++- tests/test_argparse_interleaving.py | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 tests/test_argparse_interleaving.py diff --git a/gptdiff/gptdiff.py b/gptdiff/gptdiff.py index 6defca6..b2f3a70 100644 --- a/gptdiff/gptdiff.py +++ b/gptdiff/gptdiff.py @@ -535,7 +535,12 @@ def parse_arguments(): parser.add_argument('--nowarn', action='store_true', help='Disable large token warning') parser.add_argument('--anthropic_budget_tokens', type=int, default=None, help='Budget tokens for Anthropic extended thinking') parser.add_argument('--verbose', action='store_true', help='Enable verbose output with detailed information') - return parser.parse_args() + + # Allow optional arguments like --apply to appear before or after file paths + parse_fn = parser.parse_args + if hasattr(parser, 'parse_intermixed_args'): + parse_fn = parser.parse_intermixed_args + return parse_fn() def absolute_to_relative(absolute_path): cwd = os.getcwd() diff --git a/tests/test_argparse_interleaving.py b/tests/test_argparse_interleaving.py new file mode 100644 index 0000000..a48a4c5 --- /dev/null +++ b/tests/test_argparse_interleaving.py @@ -0,0 +1,21 @@ +import sys +from unittest import mock + +import gptdiff.gptdiff as gptdiff + + +def parse(argv): + with mock.patch.object(sys, 'argv', argv): + return gptdiff.parse_arguments() + + +def test_apply_after_file(): + args = parse(['gptdiff', 'prompt', 'file.js', '--apply']) + assert args.apply is True + assert args.files == ['file.js'] + + +def test_apply_before_file(): + args = parse(['gptdiff', 'prompt', '--apply', 'file.js']) + assert args.apply is True + assert args.files == ['file.js']