mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-04 21:04:58 +02:00
Merge bitcoin/bitcoin#30148: cli: restrict multiple exclusive argument usage in bitcoin-cli
c8e6771af0test: restrict multiple CLI arguments (naiyoma)8838c4f171common/args.h: automate check for multiple cli commands (naiyoma) Pull request description: This PR is a continuation of the validation suggested [here](https://github.com/bitcoin/bitcoin/pull/27815) to ensure that only one Request Handler can be specified at a time. ACKs for top commit: stratospher: reACKc8e6771. achow101: ACKc8e6771af0tdb3: cr re ACKc8e6771af0Tree-SHA512: f4fe036fee342a54f1a7ac702ac35c40bf3d420fde6ab16313a75327292d5ee5c8ece1be9f852a13fcf73da1148b143b37b4894e294052abdde6eefb2e8c6f3f
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#include <util/fs.h>
|
||||
#include <util/fs_helpers.h>
|
||||
#include <util/strencodings.h>
|
||||
#include <util/string.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <codecvt> /* for codecvt_utf8_utf16 */
|
||||
@@ -588,6 +589,23 @@ void ArgsManager::AddHiddenArgs(const std::vector<std::string>& names)
|
||||
}
|
||||
}
|
||||
|
||||
void ArgsManager::CheckMultipleCLIArgs() const
|
||||
{
|
||||
LOCK(cs_args);
|
||||
std::vector<std::string> found{};
|
||||
auto cmds = m_available_args.find(OptionsCategory::CLI_COMMANDS);
|
||||
if (cmds != m_available_args.end()) {
|
||||
for (const auto& [cmd, argspec] : cmds->second) {
|
||||
if (IsArgSet(cmd)) {
|
||||
found.push_back(cmd);
|
||||
}
|
||||
}
|
||||
if (found.size() > 1) {
|
||||
throw std::runtime_error(strprintf("Only one of %s may be specified.", util::Join(found, ", ")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string ArgsManager::GetHelpMessage() const
|
||||
{
|
||||
const bool show_debug = GetBoolArg("-help-debug", false);
|
||||
@@ -635,6 +653,9 @@ std::string ArgsManager::GetHelpMessage() const
|
||||
case OptionsCategory::REGISTER_COMMANDS:
|
||||
usage += HelpMessageGroup("Register Commands:");
|
||||
break;
|
||||
case OptionsCategory::CLI_COMMANDS:
|
||||
usage += HelpMessageGroup("CLI Commands:");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user