Skip to content

Commit

Permalink
Improve error reporting in chip-tool when the wrong quotes are used.
Browse files Browse the repository at this point in the history
In interactive mode, arguments are delimited by single quotes.  If our argument
init fails, and we have arguments that include mismatched double quotes, there's
a good chance the wrong quotes were used in the command, and we should log that.
  • Loading branch information
bzbarsky-apple committed Feb 2, 2023
1 parent 94c7f68 commit 089e47a
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions examples/chip-tool/commands/common/Commands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,34 @@ CHIP_ERROR Commands::RunCommand(int argc, char ** argv, bool interactive)
int argumentsPosition = isGlobalCommand ? 4 : 3;
if (!command->InitArguments(argc - argumentsPosition, &argv[argumentsPosition]))
{
if (interactive)
{
// Check for arguments with a starting '"' but no ending '"': those
// would indicate that people are using double-quoting, not single
// quoting, on arguments with spaces.
for (int curArg = argumentsPosition; curArg < argc - argumentsPosition; ++curArg)
{
char * arg = argv[curArg];
if (!arg)
{
continue;
}

auto len = strlen(arg);
if (len == 0)
{
continue;
}

if (arg[0] == '"' && arg[len - 1] != '"')
{
ChipLogError(chipTool,
"Mismatched '\"' detected in argument: '%s'. Use single quotes to delimit arguments with spaces "
"in them: 'x y', not \"x y\".",
arg);
}
}
}
ShowCommand(argv[0], argv[1], command);
return CHIP_ERROR_INVALID_ARGUMENT;
}
Expand Down

0 comments on commit 089e47a

Please sign in to comment.