From 8becbe15a2a7f229041b70d0333ffc96522efb6f Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 16:49:30 -0700 Subject: Place check_and_get_package_spec in a separate file --- toolsrc/src/commands_edit.cpp | 3 ++- toolsrc/src/commands_installation.cpp | 5 +++-- toolsrc/src/commands_remove.cpp | 3 ++- toolsrc/src/vcpkg_Input.cpp | 29 +++++++++++++++++++++++++++++ toolsrc/src/vcpkg_cmd_arguments.cpp | 24 ------------------------ 5 files changed, 36 insertions(+), 28 deletions(-) create mode 100644 toolsrc/src/vcpkg_Input.cpp (limited to 'toolsrc/src') diff --git a/toolsrc/src/commands_edit.cpp b/toolsrc/src/commands_edit.cpp index 4973d6ef2..b17c02d5a 100644 --- a/toolsrc/src/commands_edit.cpp +++ b/toolsrc/src/commands_edit.cpp @@ -1,5 +1,6 @@ #include "vcpkg_Commands.h" #include "vcpkg_System.h" +#include "vcpkg_Input.h" namespace vcpkg { @@ -7,7 +8,7 @@ namespace vcpkg { static const std::string example = create_example_string("edit zlib"); args.check_exact_arg_count(1, example.c_str()); - const package_spec spec = vcpkg_cmd_arguments::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example.c_str()); + const package_spec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example.c_str()); // Find editor std::wstring env_EDITOR = System::wdupenv_str(L"EDITOR"); diff --git a/toolsrc/src/commands_installation.cpp b/toolsrc/src/commands_installation.cpp index 9eacfedcc..9eedebdbe 100644 --- a/toolsrc/src/commands_installation.cpp +++ b/toolsrc/src/commands_installation.cpp @@ -7,6 +7,7 @@ #include "post_build_lint.h" #include "vcpkg_System.h" #include "vcpkg_Dependencies.h" +#include "vcpkg_Input.h" namespace vcpkg { @@ -69,7 +70,7 @@ namespace vcpkg args.check_min_arg_count(1, example.c_str()); StatusParagraphs status_db = database_load_check(paths); - std::vector specs = vcpkg_cmd_arguments::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str()); + std::vector specs = Input::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str()); std::vector install_plan = Dependencies::create_dependency_ordered_install_plan(paths, specs, status_db); Checks::check_exit(!install_plan.empty(), "Install plan cannot be empty"); std::string specs_string = to_string(install_plan[0]); @@ -130,7 +131,7 @@ namespace vcpkg args.check_exact_arg_count(1, example.c_str()); StatusParagraphs status_db = database_load_check(paths); - const package_spec spec = vcpkg_cmd_arguments::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example.c_str()); + const package_spec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example.c_str()); std::unordered_set unmet_dependencies = Dependencies::find_unmet_dependencies(paths, spec, status_db); if (!unmet_dependencies.empty()) { diff --git a/toolsrc/src/commands_remove.cpp b/toolsrc/src/commands_remove.cpp index fd0c43de5..ebc000040 100644 --- a/toolsrc/src/commands_remove.cpp +++ b/toolsrc/src/commands_remove.cpp @@ -1,6 +1,7 @@ #include "vcpkg_Commands.h" #include "vcpkg.h" #include "vcpkg_System.h" +#include "vcpkg_Input.h" namespace vcpkg { @@ -28,7 +29,7 @@ namespace vcpkg const std::unordered_set options = args.check_and_get_optional_command_arguments({OPTION_PURGE}); auto status_db = database_load_check(paths); - std::vector specs = vcpkg_cmd_arguments::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str()); + std::vector specs = Input::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str()); bool alsoRemoveFolderFromPackages = options.find(OPTION_PURGE) != options.end(); for (const package_spec& spec : specs) diff --git a/toolsrc/src/vcpkg_Input.cpp b/toolsrc/src/vcpkg_Input.cpp new file mode 100644 index 000000000..de5890da1 --- /dev/null +++ b/toolsrc/src/vcpkg_Input.cpp @@ -0,0 +1,29 @@ +#include "vcpkg_Input.h" +#include "vcpkg_System.h" + +namespace vcpkg {namespace Input +{ + package_spec check_and_get_package_spec(const std::string& package_spec_as_string, const triplet& default_target_triplet, const char* example_text) + { + expected expected_spec = package_spec::from_string(package_spec_as_string, default_target_triplet); + if (auto spec = expected_spec.get()) + { + return *spec; + } + + System::println(System::color::error, "Error: %s: %s", expected_spec.error_code().message(), package_spec_as_string); + System::print(example_text); + exit(EXIT_FAILURE); + } + + std::vector check_and_get_package_specs(const std::vector& package_specs_as_strings, const triplet& default_target_triplet, const char* example_text) + { + std::vector specs; + for (const std::string& spec : package_specs_as_strings) + { + specs.push_back(check_and_get_package_spec(spec, default_target_triplet, example_text)); + } + + return specs; + } +}} diff --git a/toolsrc/src/vcpkg_cmd_arguments.cpp b/toolsrc/src/vcpkg_cmd_arguments.cpp index f1ab4e937..a286ba9b7 100644 --- a/toolsrc/src/vcpkg_cmd_arguments.cpp +++ b/toolsrc/src/vcpkg_cmd_arguments.cpp @@ -50,30 +50,6 @@ namespace vcpkg option_field = new_setting; } - package_spec vcpkg_cmd_arguments::check_and_get_package_spec(const std::string& package_spec_as_string, const triplet& default_target_triplet, const char* example_text) - { - expected expected_spec = package_spec::from_string(package_spec_as_string, default_target_triplet); - if (auto spec = expected_spec.get()) - { - return *spec; - } - - System::println(System::color::error, "Error: %s: %s", expected_spec.error_code().message(), package_spec_as_string); - System::print(example_text); - exit(EXIT_FAILURE); - } - - std::vector vcpkg_cmd_arguments::check_and_get_package_specs(const std::vector& package_specs_as_strings, const triplet& default_target_triplet, const char* example_text) - { - std::vector specs; - for (const std::string& spec : package_specs_as_strings) - { - specs.push_back(check_and_get_package_spec(spec, default_target_triplet, example_text)); - } - - return specs; - } - vcpkg_cmd_arguments vcpkg_cmd_arguments::create_from_command_line(const int argc, const wchar_t* const* const argv) { std::vector v; -- cgit v1.2.3 From 4b0f3d87befb84c819afbf664614281491a784b9 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 16:54:07 -0700 Subject: Introduce Input::check_triplet() --- toolsrc/src/main.cpp | 9 ++------- toolsrc/src/vcpkg_Input.cpp | 13 +++++++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'toolsrc/src') diff --git a/toolsrc/src/main.cpp b/toolsrc/src/main.cpp index a317330ff..b49f2bdef 100644 --- a/toolsrc/src/main.cpp +++ b/toolsrc/src/main.cpp @@ -11,6 +11,7 @@ #include #include "vcpkg_Files.h" #include "vcpkg_System.h" +#include "vcpkg_Input.h" using namespace vcpkg; @@ -87,13 +88,7 @@ static void inner(const vcpkg_cmd_arguments& args) } } - if (!paths.is_valid_triplet(default_target_triplet)) - { - System::println(System::color::error, "Error: invalid triplet: %s", default_target_triplet.value); - TrackProperty("error", "invalid triplet: " + default_target_triplet.value); - help_topic_valid_triplet(paths); - exit(EXIT_FAILURE); - } + Input::check_triplet(default_target_triplet, paths); if (auto command_function = find_command(args.command, get_available_commands_type_a())) { diff --git a/toolsrc/src/vcpkg_Input.cpp b/toolsrc/src/vcpkg_Input.cpp index de5890da1..09fce7b8c 100644 --- a/toolsrc/src/vcpkg_Input.cpp +++ b/toolsrc/src/vcpkg_Input.cpp @@ -1,5 +1,7 @@ #include "vcpkg_Input.h" #include "vcpkg_System.h" +#include "metrics.h" +#include "vcpkg_Commands.h" namespace vcpkg {namespace Input { @@ -26,4 +28,15 @@ namespace vcpkg {namespace Input return specs; } + + void check_triplet(const triplet& t, const vcpkg_paths& paths) + { + if (!paths.is_valid_triplet(t)) + { + System::println(System::color::error, "Error: invalid triplet: %s", t.value); + TrackProperty("error", "invalid triplet: " + t.value); + help_topic_valid_triplet(paths); + exit(EXIT_FAILURE); + } + } }} -- cgit v1.2.3 From e3455e281bd9a2147259f7ba769211b9709e51da Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 16:55:34 -0700 Subject: Introduce Input::check_all_triplets() --- toolsrc/src/vcpkg_Input.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'toolsrc/src') diff --git a/toolsrc/src/vcpkg_Input.cpp b/toolsrc/src/vcpkg_Input.cpp index 09fce7b8c..c8da089b8 100644 --- a/toolsrc/src/vcpkg_Input.cpp +++ b/toolsrc/src/vcpkg_Input.cpp @@ -39,4 +39,12 @@ namespace vcpkg {namespace Input exit(EXIT_FAILURE); } } + + void check_all_triplets(std::vector triplets, const vcpkg_paths& paths) + { + for (const package_spec& spec : triplets) + { + check_triplet(spec.target_triplet, paths); + } + } }} -- cgit v1.2.3 From 51bc83c70e915892a658795f51bb3bb10360ee8d Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 17:01:41 -0700 Subject: Added triplet check in all commands that obtain package_specs --- toolsrc/src/commands_create.cpp | 2 ++ toolsrc/src/commands_edit.cpp | 1 + toolsrc/src/commands_installation.cpp | 3 +++ toolsrc/src/commands_remove.cpp | 1 + 4 files changed, 7 insertions(+) (limited to 'toolsrc/src') diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp index d365dac70..5e88f9c65 100644 --- a/toolsrc/src/commands_create.cpp +++ b/toolsrc/src/commands_create.cpp @@ -2,6 +2,7 @@ #include "vcpkg_System.h" #include "vcpkg_Environment.h" #include "vcpkg_Files.h" +#include "vcpkg_Input.h" namespace vcpkg { @@ -14,6 +15,7 @@ namespace vcpkg expected current_spec = package_spec::from_string(args.command_arguments[0], default_target_triplet); if (const package_spec* spec = current_spec.get()) { + Input::check_triplet(spec->target_triplet, paths); Environment::ensure_utilities_on_path(paths); // Space OR define the FILENAME with proper spacing diff --git a/toolsrc/src/commands_edit.cpp b/toolsrc/src/commands_edit.cpp index b17c02d5a..a3e2f402d 100644 --- a/toolsrc/src/commands_edit.cpp +++ b/toolsrc/src/commands_edit.cpp @@ -9,6 +9,7 @@ namespace vcpkg static const std::string example = create_example_string("edit zlib"); args.check_exact_arg_count(1, example.c_str()); const package_spec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example.c_str()); + Input::check_triplet(spec.target_triplet, paths); // Find editor std::wstring env_EDITOR = System::wdupenv_str(L"EDITOR"); diff --git a/toolsrc/src/commands_installation.cpp b/toolsrc/src/commands_installation.cpp index 9eedebdbe..8e66f9548 100644 --- a/toolsrc/src/commands_installation.cpp +++ b/toolsrc/src/commands_installation.cpp @@ -71,6 +71,7 @@ namespace vcpkg StatusParagraphs status_db = database_load_check(paths); std::vector specs = Input::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str()); + Input::check_all_triplets(specs, paths); std::vector install_plan = Dependencies::create_dependency_ordered_install_plan(paths, specs, status_db); Checks::check_exit(!install_plan.empty(), "Install plan cannot be empty"); std::string specs_string = to_string(install_plan[0]); @@ -132,6 +133,7 @@ namespace vcpkg StatusParagraphs status_db = database_load_check(paths); const package_spec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example.c_str()); + Input::check_triplet(spec.target_triplet, paths); std::unordered_set unmet_dependencies = Dependencies::find_unmet_dependencies(paths, spec, status_db); if (!unmet_dependencies.empty()) { @@ -159,6 +161,7 @@ namespace vcpkg expected current_spec = package_spec::from_string(args.command_arguments[0], default_target_triplet); if (auto spec = current_spec.get()) { + Input::check_triplet(spec->target_triplet, paths); Environment::ensure_utilities_on_path(paths); const fs::path port_dir = args.command_arguments.at(1); build_internal(*spec, paths, port_dir); diff --git a/toolsrc/src/commands_remove.cpp b/toolsrc/src/commands_remove.cpp index ebc000040..c458125dd 100644 --- a/toolsrc/src/commands_remove.cpp +++ b/toolsrc/src/commands_remove.cpp @@ -30,6 +30,7 @@ namespace vcpkg auto status_db = database_load_check(paths); std::vector specs = Input::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str()); + Input::check_all_triplets(specs, paths); bool alsoRemoveFolderFromPackages = options.find(OPTION_PURGE) != options.end(); for (const package_spec& spec : specs) -- cgit v1.2.3 From 188eac680ba930c51943d4af34de58bbd325dcb1 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Fri, 30 Sep 2016 17:02:39 -0700 Subject: Rename check_all_triplets() to check_triplets() --- toolsrc/src/commands_installation.cpp | 2 +- toolsrc/src/commands_remove.cpp | 2 +- toolsrc/src/vcpkg_Input.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'toolsrc/src') diff --git a/toolsrc/src/commands_installation.cpp b/toolsrc/src/commands_installation.cpp index 8e66f9548..d6590fd0d 100644 --- a/toolsrc/src/commands_installation.cpp +++ b/toolsrc/src/commands_installation.cpp @@ -71,7 +71,7 @@ namespace vcpkg StatusParagraphs status_db = database_load_check(paths); std::vector specs = Input::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str()); - Input::check_all_triplets(specs, paths); + Input::check_triplets(specs, paths); std::vector install_plan = Dependencies::create_dependency_ordered_install_plan(paths, specs, status_db); Checks::check_exit(!install_plan.empty(), "Install plan cannot be empty"); std::string specs_string = to_string(install_plan[0]); diff --git a/toolsrc/src/commands_remove.cpp b/toolsrc/src/commands_remove.cpp index c458125dd..5bb9ecc96 100644 --- a/toolsrc/src/commands_remove.cpp +++ b/toolsrc/src/commands_remove.cpp @@ -30,7 +30,7 @@ namespace vcpkg auto status_db = database_load_check(paths); std::vector specs = Input::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str()); - Input::check_all_triplets(specs, paths); + Input::check_triplets(specs, paths); bool alsoRemoveFolderFromPackages = options.find(OPTION_PURGE) != options.end(); for (const package_spec& spec : specs) diff --git a/toolsrc/src/vcpkg_Input.cpp b/toolsrc/src/vcpkg_Input.cpp index c8da089b8..269de13b3 100644 --- a/toolsrc/src/vcpkg_Input.cpp +++ b/toolsrc/src/vcpkg_Input.cpp @@ -40,7 +40,7 @@ namespace vcpkg {namespace Input } } - void check_all_triplets(std::vector triplets, const vcpkg_paths& paths) + void check_triplets(std::vector triplets, const vcpkg_paths& paths) { for (const package_spec& spec : triplets) { -- cgit v1.2.3