From 25334bb18e549fef8c1516ac270e9bbfa3fd655b Mon Sep 17 00:00:00 2001 From: Bruce Dawson Date: Mon, 5 Dec 2022 22:59:57 +0000 Subject: [PATCH] Handle goma_ctl/autoninja /? With nested batch files it is very common for /? arguments to end up being interpreted as a request for help on the batch file "call" command. That is, if a user invokes "goma_ctl /?" then this turns into something like this: @call ...\python3.bat %~dp0\.cipd_bin\goma_ctl.py %* The name of the script to be invoked is ignored and this is treated like: @call /? This is particularly problematic for commands like goma_ctl and autoninja which don't print help if no arguments are passed, thus making finding the correct help incantation slightly challenging. This special-cases /? in these two batch files. Some other common batch files were tested and found to be not affected, so while this is not a complete fix it does hit some of the most important places. Change-Id: Ic9b0455c2f8b085666862bc4495d9bad445dfeaf Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4080991 Reviewed-by: Dirk Pranke Commit-Queue: Bruce Dawson --- autoninja.bat | 6 ++++++ goma_ctl.bat | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/autoninja.bat b/autoninja.bat index dd9f12eb9..cfe662548 100755 --- a/autoninja.bat +++ b/autoninja.bat @@ -7,6 +7,12 @@ setlocal set scriptdir=%~dp0 +if "%*" == "/?" ( + rem Handle "autoninja /?" which will otherwise give help on the "call" command + @call python3.bat %~dp0\ninja.py --help + exit /b +) + if not defined AUTONINJA_BUILD_ID ( :: Set unique build ID. FOR /f "usebackq tokens=*" %%a in (`%scriptdir%python-bin\python3.bat -c "import uuid; print(uuid.uuid4())"`) do set AUTONINJA_BUILD_ID=%%a diff --git a/goma_ctl.bat b/goma_ctl.bat index eb2658080..d8bd49266 100644 --- a/goma_ctl.bat +++ b/goma_ctl.bat @@ -8,5 +8,9 @@ set scriptdir=%~dp0 @call "%~dp0\cipd_bin_setup.bat" > nul 2>&1 +if "%*" == "/?" ( + @call %scriptdir%python-bin\python3.bat %~dp0\.cipd_bin\goma_ctl.py --help + exit /b +) @call %scriptdir%python-bin\python3.bat %~dp0\.cipd_bin\goma_ctl.py %* exit /b %ERRORLEVEL%