Give an error and exit if there are unknown parameters

If an unknown option is given via either the command line args or
the conf file, throw an error and exit

Update tests for ArgsManager knowing args

Ignore unknown options in the config file for bitcoin-cli

Fix tests and bitcoin-cli to match actual options used
This commit is contained in:
Andrew Chow
2018-04-28 19:40:51 -04:00
parent 174f7c8080
commit 4f8704d57f
12 changed files with 205 additions and 66 deletions

View File

@@ -118,8 +118,7 @@ inline bool IsSwitchChar(char c)
#endif
}
enum class OptionsCategory
{
enum class OptionsCategory {
OPTIONS,
CONNECTION,
WALLET,
@@ -132,7 +131,9 @@ enum class OptionsCategory
RPC,
GUI,
COMMANDS,
REGISTER_COMMANDS
REGISTER_COMMANDS,
HIDDEN // Always the last option to avoid printing these in the help
};
class ArgsManager
@@ -156,7 +157,7 @@ protected:
std::set<std::string> m_network_only_args;
std::map<OptionsCategory, std::map<std::string, Arg>> m_available_args;
void ReadConfigStream(std::istream& stream);
bool ReadConfigStream(std::istream& stream, std::string& error, bool ignore_invalid_keys = false);
public:
ArgsManager();
@@ -166,8 +167,8 @@ public:
*/
void SelectConfigNetwork(const std::string& network);
void ParseParameters(int argc, const char*const argv[]);
void ReadConfigFiles();
bool ParseParameters(int argc, const char* const argv[], std::string& error);
bool ReadConfigFiles(std::string& error, bool ignore_invalid_keys = false);
/**
* Log warnings for options in m_section_only_args when
@@ -262,10 +263,20 @@ public:
*/
void AddArg(const std::string& name, const std::string& help, const bool debug_only, const OptionsCategory& cat);
/**
* Clear available arguments
*/
void ClearArgs() { m_available_args.clear(); }
/**
* Get the help string
*/
std::string GetHelpMessage();
/**
* Check whether we know of this arg
*/
bool IsArgKnown(const std::string& key, std::string& error);
};
extern ArgsManager gArgs;