aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2016-09-23 12:20:09 -0700
committerRobert Schumacher <roschuma@microsoft.com>2016-09-23 12:20:09 -0700
commit8a8180503d8217959d96a9f2b9fc6366d67c1354 (patch)
tree71f299f461d4c726a5cf49a535b42898149caccc /toolsrc/src
parentb2f6a769ea015f49c7061e36c8c7125dd53ca01e (diff)
parentddd0f88579eb1adff0dd8b14458c4bf70eaa902d (diff)
downloadvcpkg-8a8180503d8217959d96a9f2b9fc6366d67c1354.tar.gz
vcpkg-8a8180503d8217959d96a9f2b9fc6366d67c1354.zip
Merge branch 'alzie-default_triplet'
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/commands_create.cpp2
-rw-r--r--toolsrc/src/commands_edit.cpp2
-rw-r--r--toolsrc/src/commands_installation.cpp4
-rw-r--r--toolsrc/src/commands_other.cpp2
-rw-r--r--toolsrc/src/commands_remove.cpp2
-rw-r--r--toolsrc/src/main.cpp38
-rw-r--r--toolsrc/src/triplet.cpp16
-rw-r--r--toolsrc/src/vcpkg_cmd_arguments.cpp2
8 files changed, 42 insertions, 26 deletions
diff --git a/toolsrc/src/commands_create.cpp b/toolsrc/src/commands_create.cpp
index 73d163af8..8ae67b799 100644
--- a/toolsrc/src/commands_create.cpp
+++ b/toolsrc/src/commands_create.cpp
@@ -7,7 +7,7 @@ namespace vcpkg
void create_command(const vcpkg_cmd_arguments& args, const vcpkg_paths& paths, const triplet& default_target_triplet)
{
args.check_max_args(3);
- package_spec spec = args.parse_all_arguments_as_package_specs(default_target_triplet).at(0);
+ package_spec spec = args.parse_all_arguments_as_package_specs(paths, default_target_triplet).at(0);
if (args.command_arguments.size() < 2)
{
System::println(System::color::error, "Error: create requires the archive's URL as the second argument.");
diff --git a/toolsrc/src/commands_edit.cpp b/toolsrc/src/commands_edit.cpp
index 71ae8b2c8..2272c1277 100644
--- a/toolsrc/src/commands_edit.cpp
+++ b/toolsrc/src/commands_edit.cpp
@@ -7,7 +7,7 @@ namespace vcpkg
{
static auto example = "edit zlib";
args.check_max_args(1, example);
- package_spec spec = args.parse_all_arguments_as_package_specs(default_target_triplet, example).at(0);
+ package_spec spec = args.parse_all_arguments_as_package_specs(paths, default_target_triplet, example).at(0);
// 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 0902ba525..35e1ba28c 100644
--- a/toolsrc/src/commands_installation.cpp
+++ b/toolsrc/src/commands_installation.cpp
@@ -60,7 +60,7 @@ namespace vcpkg
{
StatusParagraphs status_db = database_load_check(paths);
- std::vector<package_spec> specs = args.parse_all_arguments_as_package_specs(default_target_triplet);
+ std::vector<package_spec> specs = args.parse_all_arguments_as_package_specs(paths, default_target_triplet);
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]);
@@ -119,7 +119,7 @@ namespace vcpkg
StatusParagraphs status_db = database_load_check(paths);
- const package_spec spec = args.parse_all_arguments_as_package_specs(default_target_triplet).at(0);
+ const package_spec spec = args.parse_all_arguments_as_package_specs(paths, default_target_triplet).at(0);
std::unordered_set<package_spec> unmet_dependencies = Dependencies::find_unmet_dependencies(paths, spec, status_db);
if (!unmet_dependencies.empty())
{
diff --git a/toolsrc/src/commands_other.cpp b/toolsrc/src/commands_other.cpp
index f237d2726..f4fad6690 100644
--- a/toolsrc/src/commands_other.cpp
+++ b/toolsrc/src/commands_other.cpp
@@ -32,7 +32,7 @@ namespace vcpkg
//"\n"
"Options:\n"
" --triplet <t> Specify the target architecture triplet.\n"
- " (default: x86-windows, see 'vcpkg help triplet')\n"
+ " (default: %%VCPKG_DEFAULT_TRIPLET%%, see 'vcpkg help triplet')\n"
"\n"
" --vcpkg-root <path> Specify the vcpkg root directory\n"
" (default: %%VCPKG_ROOT%%)\n"
diff --git a/toolsrc/src/commands_remove.cpp b/toolsrc/src/commands_remove.cpp
index f5315ccb1..0b00e10f6 100644
--- a/toolsrc/src/commands_remove.cpp
+++ b/toolsrc/src/commands_remove.cpp
@@ -25,7 +25,7 @@ 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 = args.parse_all_arguments_as_package_specs(default_target_triplet);
+ std::vector<package_spec> specs = args.parse_all_arguments_as_package_specs(paths, default_target_triplet);
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 e9ce4702c..a2f6fa10f 100644
--- a/toolsrc/src/main.cpp
+++ b/toolsrc/src/main.cpp
@@ -69,32 +69,32 @@ static void inner(const vcpkg_cmd_arguments& args)
return command_function(args, paths);
}
- triplet default_target_triplet = triplet::X86_WINDOWS;
-
- if (args.target_triplet != nullptr)
+ triplet default_target_triplet;
+ if(args.target_triplet != nullptr)
{
- const std::string& target_triplet = *args.target_triplet;
-
- auto it = fs::directory_iterator(paths.triplets);
- for (; it != fs::directory_iterator(); ++it)
+ default_target_triplet = {*args.target_triplet};
+ }
+ else
+ {
+ const auto vcpkg_default_triplet_env = System::wdupenv_str(L"VCPKG_DEFAULT_TRIPLET");
+ if(!vcpkg_default_triplet_env.empty())
{
- std::string triplet_file_name = it->path().stem().generic_u8string();
- if (target_triplet == triplet_file_name) // TODO: fuzzy compare
- {
- default_target_triplet = {triplet_file_name};
- break;
- }
+ default_target_triplet = {Strings::utf16_to_utf8(vcpkg_default_triplet_env)};
}
-
- if (it == fs::directory_iterator())
+ else
{
- System::println(System::color::error, "Error: invalid triplet: %s", target_triplet);
- TrackProperty("error", "invalid triplet: " + target_triplet);
- help_topic_valid_triplet(paths);
- exit(EXIT_FAILURE);
+ default_target_triplet = triplet::X86_WINDOWS;
}
}
+ if(!default_target_triplet.validate(paths))
+ {
+ 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);
+ }
+
if (auto command_function = find_command(args.command, get_available_commands_type_a()))
{
return command_function(args, paths, default_target_triplet);
diff --git a/toolsrc/src/triplet.cpp b/toolsrc/src/triplet.cpp
index 9ad3d8847..14f19d5cd 100644
--- a/toolsrc/src/triplet.cpp
+++ b/toolsrc/src/triplet.cpp
@@ -1,4 +1,5 @@
#include "triplet.h"
+#include "vcpkg.h"
#include "vcpkg_System.h"
#include "vcpkg_Checks.h"
@@ -56,4 +57,19 @@ namespace vcpkg
Checks::exit_with_message("Unknown system: %s", value);
}
+
+ bool triplet::validate(const vcpkg_paths & paths)
+ {
+ auto it = fs::directory_iterator(paths.triplets);
+ for(; it != fs::directory_iterator(); ++it)
+ {
+ std::string triplet_file_name = it->path().stem().generic_u8string();
+ if(value == triplet_file_name) // TODO: fuzzy compare
+ {
+ //value = triplet_file_name; // NOTE: uncomment when implementing fuzzy compare
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/toolsrc/src/vcpkg_cmd_arguments.cpp b/toolsrc/src/vcpkg_cmd_arguments.cpp
index 3605503b0..9181342d0 100644
--- a/toolsrc/src/vcpkg_cmd_arguments.cpp
+++ b/toolsrc/src/vcpkg_cmd_arguments.cpp
@@ -179,7 +179,7 @@ namespace vcpkg
}
}
- std::vector<package_spec> vcpkg_cmd_arguments::parse_all_arguments_as_package_specs(const triplet& default_target_triplet, const char* example_text) const
+ std::vector<package_spec> vcpkg_cmd_arguments::parse_all_arguments_as_package_specs(const vcpkg_paths& paths, const triplet& default_target_triplet, const char* example_text) const
{
size_t arg_count = command_arguments.size();
if (arg_count < 1)