[PATCH 2/6] patman: Fix implicit command inserting

Douglas Anderson
2022-06-30T21:09:15Z

The logic to insert an implicit command has always been a bit broken
but it was masked by another bug fixed in the patch ("patman: Don't
look at sys.argv when parsing settings"). Specifically, imagine that
you're just calling patman like this:

patman -c1

After the parse_known_args() command then the "-c1" will have been
parsed and we'll have no command. The "rest" variable will be an empty
list. Going into the logic you can see that nargs = 0. The implicit
insertion of send ideally would create an argument list of:
['-c1', 'send']
...but it doesn't because argv[:-0] is the same as argv[:0] and that's
an empty list.

Let's fix this little glitch.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
---

tools/patman/main.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/patman/main.py b/tools/patman/main.py
index 2a2ac4570931..336f4e439aa9 100755
--- a/tools/patman/main.py
+++ b/tools/patman/main.py
@@ -120,7 +120,9 @@ else:
# No command, so insert it after the known arguments and before the ones
# that presumably relate to the 'send' subcommand
nargs = len(rest)
- argv = argv[:-nargs] + ['send'] + rest
+ if nargs:
+ argv = argv[:-nargs]
+ argv = argv + ['send'] + rest
args = parser.parse_args(argv)

if __name__ != "__main__":
--
2.37.0.rc0.161.g10f37bed90-goog