aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2016-09-30 17:09:23 -0700
committerRobert Schumacher <roschuma@microsoft.com>2016-09-30 17:09:23 -0700
commit98b4a67fe1af6974f146b518c0f1644de290d8da (patch)
tree015bea935501b3ae80c635b06da83e9591d9166c /toolsrc/src
parent241ca8cd17929d53a5c10c4f366f6972d865ba4f (diff)
parent188eac680ba930c51943d4af34de58bbd325dcb1 (diff)
downloadvcpkg-98b4a67fe1af6974f146b518c0f1644de290d8da.tar.gz
vcpkg-98b4a67fe1af6974f146b518c0f1644de290d8da.zip
Merge branch 'master' of https://github.com/microsoft/vcpkg
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/commands_create.cpp2
-rw-r--r--toolsrc/src/commands_edit.cpp4
-rw-r--r--toolsrc/src/commands_installation.cpp8
-rw-r--r--toolsrc/src/commands_remove.cpp4
-rw-r--r--toolsrc/src/main.cpp9
-rw-r--r--toolsrc/src/vcpkg_Input.cpp50
-rw-r--r--toolsrc/src/vcpkg_cmd_arguments.cpp24
7 files changed, 66 insertions, 35 deletions
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<package_spec> 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 4973d6ef2..a3e2f402d 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,8 @@ 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());
+ 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 9eacfedcc..d6590fd0d 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,8 @@ namespace vcpkg
args.check_min_arg_count(1, example.c_str());
StatusParagraphs status_db = database_load_check(paths);
- std::vector<package_spec> specs = vcpkg_cmd_arguments::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str());
+ std::vector<package_spec> specs = Input::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str());
+ Input::check_triplets(specs, paths);
std::vector<package_spec> 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 +132,8 @@ 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());
+ Input::check_triplet(spec.target_triplet, paths);
std::unordered_set<package_spec> unmet_dependencies = Dependencies::find_unmet_dependencies(paths, spec, status_db);
if (!unmet_dependencies.empty())
{
@@ -158,6 +161,7 @@ namespace vcpkg
expected<package_spec> 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 fd0c43de5..5bb9ecc96 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,8 @@ namespace vcpkg
const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({OPTION_PURGE});
auto status_db = database_load_check(paths);
- std::vector<package_spec> specs = vcpkg_cmd_arguments::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str());
+ std::vector<package_spec> specs = Input::check_and_get_package_specs(args.command_arguments, default_target_triplet, example.c_str());
+ Input::check_triplets(specs, paths);
bool alsoRemoveFolderFromPackages = options.find(OPTION_PURGE) != options.end();
for (const package_spec& spec : specs)
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 <Shlobj.h>
#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
new file mode 100644
index 000000000..269de13b3
--- /dev/null
+++ b/toolsrc/src/vcpkg_Input.cpp
@@ -0,0 +1,50 @@
+#include "vcpkg_Input.h"
+#include "vcpkg_System.h"
+#include "metrics.h"
+#include "vcpkg_Commands.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<package_spec> 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<package_spec> check_and_get_package_specs(const std::vector<std::string>& package_specs_as_strings, const triplet& default_target_triplet, const char* example_text)
+ {
+ std::vector<package_spec> 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;
+ }
+
+ 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);
+ }
+ }
+
+ void check_triplets(std::vector<package_spec> triplets, const vcpkg_paths& paths)
+ {
+ for (const package_spec& spec : triplets)
+ {
+ check_triplet(spec.target_triplet, paths);
+ }
+ }
+}}
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<package_spec> 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<package_spec> vcpkg_cmd_arguments::check_and_get_package_specs(const std::vector<std::string>& package_specs_as_strings, const triplet& default_target_triplet, const char* example_text)
- {
- std::vector<package_spec> 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<std::string> v;