| 720 | } |
| 721 | |
| 722 | std::string ArgsManager::GetHelpMessage() const |
| 723 | { |
| 724 | const bool show_debug = GetBoolArg("-help-debug", false); |
| 725 | |
| 726 | std::string usage; |
| 727 | LOCK(cs_args); |
| 728 | |
| 729 | const auto command_options = m_available_args.find(OptionsCategory::COMMAND_OPTIONS); |
| 730 | const auto for_matching_cmd_opts = [&](const std::set<std::string>& select, auto&& fn) EXCLUSIVE_LOCKS_REQUIRED(cs_args) { |
| 731 | if (select.empty()) return; |
| 732 | if (command_options == m_available_args.end()) return; |
| 733 | for (const auto& [name, info] : command_options->second) { |
| 734 | if (!show_debug && (info.m_flags & ArgsManager::DEBUG_ONLY)) continue; |
| 735 | if (!select.contains(name)) continue; |
| 736 | fn(name, info); |
| 737 | } |
| 738 | }; |
| 739 | |
| 740 | for (const auto& [category, category_args] : m_available_args) { |
| 741 | switch(category) { |
| 742 | case OptionsCategory::OPTIONS: |
| 743 | usage += HelpMessageGroup("Options:"); |
| 744 | break; |
| 745 | case OptionsCategory::CONNECTION: |
| 746 | usage += HelpMessageGroup("Connection options:"); |
| 747 | break; |
| 748 | case OptionsCategory::ZMQ: |
| 749 | usage += HelpMessageGroup("ZeroMQ notification options:"); |
| 750 | break; |
| 751 | case OptionsCategory::DEBUG_TEST: |
| 752 | usage += HelpMessageGroup("Debugging/Testing options:"); |
| 753 | break; |
| 754 | case OptionsCategory::NODE_RELAY: |
| 755 | usage += HelpMessageGroup("Node relay options:"); |
| 756 | break; |
| 757 | case OptionsCategory::BLOCK_CREATION: |
| 758 | usage += HelpMessageGroup("Block creation options:"); |
| 759 | break; |
| 760 | case OptionsCategory::RPC: |
| 761 | usage += HelpMessageGroup("RPC server options:"); |
| 762 | break; |
| 763 | case OptionsCategory::IPC: |
| 764 | usage += HelpMessageGroup("IPC interprocess connection options:"); |
| 765 | break; |
| 766 | case OptionsCategory::WALLET: |
| 767 | usage += HelpMessageGroup("Wallet options:"); |
| 768 | break; |
| 769 | case OptionsCategory::WALLET_DEBUG_TEST: |
| 770 | if (show_debug) usage += HelpMessageGroup("Wallet debugging/testing options:"); |
| 771 | break; |
| 772 | case OptionsCategory::CHAINPARAMS: |
| 773 | usage += HelpMessageGroup("Chain selection options:"); |
| 774 | break; |
| 775 | case OptionsCategory::GUI: |
| 776 | usage += HelpMessageGroup("UI Options:"); |
| 777 | break; |
| 778 | case OptionsCategory::COMMANDS: |
| 779 | usage += HelpMessageGroup("Commands:"); |