#pragma once #include #include #include #include "opt_bool.h" #include "vcpkg_paths.h" namespace vcpkg { struct vcpkg_cmd_arguments { static vcpkg_cmd_arguments create_from_command_line(const int argc, const wchar_t* const* const argv); static vcpkg_cmd_arguments create_from_arg_sequence(const std::string* arg_begin, const std::string* arg_end); std::unique_ptr vcpkg_root_dir; std::unique_ptr target_triplet; opt_bool debug = opt_bool::unspecified; opt_bool sendmetrics = opt_bool::unspecified; opt_bool printmetrics = opt_bool::unspecified; std::string command; std::vector command_arguments; std::unordered_set check_and_get_optional_command_arguments(const std::vector& valid_options) const; void check_max_arg_count(const size_t expected_arg_count) const; void check_max_arg_count(const size_t expected_arg_count, const char* example_text) const; void check_min_arg_count(const size_t expected_arg_count) const; void check_min_arg_count(const size_t expected_arg_count, const char* example_text) const; void check_exact_arg_count(const size_t expected_arg_count) const; void check_exact_arg_count(const size_t expected_arg_count, const char* example_text) const; private: std::unordered_set optional_command_arguments; }; }