cpack: Add CLI argument spell checking

Use Levenshtein distance to track when the user may have made a typo in
an argument to `cpack`.
This commit is contained in:
Tyler Yankee
2026-09-11 08:23:35 -04:00
parent 314c720eaf
commit 1cd84285e7
4 changed files with 8 additions and 0 deletions
+5
View File
@@ -265,6 +265,11 @@ int main(int argc, char const* const* argv)
}
if (!matched && cmHasPrefix(arg, '-')) {
std::string error = cmStrCat("Unknown argument: ", arg);
std::string const suggestion =
cmFindClosestCommandLineArgument(arg, arguments);
if (!suggestion.empty()) {
error = cmStrCat(error, ". Did you mean: ", suggestion, '?');
}
cmCPack_Log(&log, cmCPackLog::LOG_ERROR, error << '\n');
parsed = false;
}
@@ -7,6 +7,7 @@ set(CPACK_PACKAGE_VERSION "1")
]])
set(RunCMake_TEST_NO_CLEAN 1)
run_cmake_command(NotAGenerator ${CMAKE_CPACK_COMMAND} -G NotAGenerator)
run_cmake_command(UnknownArgumentDidYouMean ${CMAKE_CPACK_COMMAND} --verbos)
unset(RunCMake_TEST_NO_CLEAN)
function(run_MultiConfig)
@@ -0,0 +1 @@
^CPack Error: Unknown argument: --verbos\. Did you mean: --verbose\?