/* * Copyright (c) 2020, Sergey Bugaev * Copyright (c) 2022, Matthias Zimmerman * * SPDX-License-Identifier: BSD-2-Clause */ #include "AK/JsonObject.h" #include #include #include #include #include #include #include #include #include static Optional convert_to_double(char const* s) { char* p; double v = strtod(s, &p); if (isnan(v) || p == s) return {}; return v; } namespace Core { ArgsParser::ArgsParser() { add_option(m_show_help, "Display help message and exit", "help", 0, OptionHideMode::Markdown); add_option(m_show_version, "Print version", "version", 0, OptionHideMode::Markdown); add_option(m_perform_autocomplete, "Perform autocompletion", "complete", 0, OptionHideMode::CommandLineAndMarkdown); } bool ArgsParser::parse(int argc, char* const* argv, FailureBehavior failure_behavior) { auto fail = [this, argv, failure_behavior] { if (failure_behavior == FailureBehavior::PrintUsage || failure_behavior == FailureBehavior::PrintUsageAndExit) print_usage(stderr, argv[0]); if (failure_behavior == FailureBehavior::Exit || failure_behavior == FailureBehavior::PrintUsageAndExit) exit(1); }; Vector